同時學習GIT和GitKraken。我在一個文件中做了小改動 - aa.cpp
,在GitKraken
的幫助下提交併推送到遠程存儲庫。突然間,我發現我推送了我不喜歡的項目目錄中的所有文件。刪除上次提交併推送
現在我需要從存儲庫中刪除不需要的文件。我更喜歡從遠程存儲庫中刪除最後一次推送,並嘗試再次提交併推送。如何使用GIT
命令刪除上次提交。如何使與GitKraken
相同?
同時學習GIT和GitKraken。我在一個文件中做了小改動 - aa.cpp
,在GitKraken
的幫助下提交併推送到遠程存儲庫。突然間,我發現我推送了我不喜歡的項目目錄中的所有文件。刪除上次提交併推送
現在我需要從存儲庫中刪除不需要的文件。我更喜歡從遠程存儲庫中刪除最後一次推送,並嘗試再次提交併推送。如何使用GIT
命令刪除上次提交。如何使與GitKraken
相同?
如果您已經推送了此提交,那麼可能是其他人已經拉動了該分支。在這種情況下,重寫你的分支的歷史是不可取的,則應該恢復這個承諾:
git revert <SHA-1>
git push origin branch
這裏<SHA-1>
是要刪除的提交的提交哈希值。要找到這個散列值,只需在分支上鍵入git log
並檢查第一個條目。
實際使用git revert
增加了這是一個新的提交,它是要刪除提交的鏡像。這是在公共分支上撤消提交的首選方式,因爲它只是向分支添加新信息。
如果你確信你使用這個分支的唯一的人,那麼你有另一種選擇:
git reset --hard HEAD~1
其次
git push --force origin branch
但是,你應該只,如果沒有人使用這個選項其他人正在分享這個分支。
我確實希望你在一個單獨的分支上工作,所以不是主人(或者如果你使用git-flow開發的話)。對於我的例子中,我將使用my-broken-branch
作爲分支名;)
我的步驟是:
刪除遠程分支,我們打算以後推更新的版本。
git push origin :my-broken-branch
接下來從本地分支中刪除最後一個提交。 HEAD^1
指的是比當前更早的提交。
git reset HEAD^1
現在繼續,只需添加您需要的文件並按照您的慣例進行提交。最後推動你的分支到遠程。它將在那裏重新創建分支,並且沒有人必須知道已更改的提交。
git push origin my-broken-branch
的方式我去了解它是通過鍵入git status
,這使我們能夠驗證我們目前在樹枝上,依次爲:
git log
然後,你會看到這樣的事情:
commit aa09a82fb69af2d1aebde51d71514f7a03c3a692
Author: User <[email protected]>
Date: Fri Nov 4 15:36:22 2016 -0400
Fixed issue with vertical scroll being forced.
commit 411771837efe3ed555395e77fd35105a500ab758
Author: User <[email protected]>
Date: Thu Nov 3 15:50:42 2016 -0400
Added Notifications.
commit f43b262f4e02b5a7268280e1230d44e36d1e547b
Author: User <[email protected]>
Date: Thu Nov 3 12:11:00 2016 -0400
Your Bases Are Belong To Us.
所以,這告訴我們,commit aa09a82f
是你最後一個,和commit 41177183
是面前的一個,那麼:
git reset --hard 41177183
...讓我們回到那個提交,保留遠程備份。與其他git status
,以確保一切都設置了雙推(我個人有關驗證我的當前分支,尤其是有點強迫症多任務處理時):
git push origin :<branch_name>
git push origin <branch_name>
在這一點上,你應該是所有設定,但它總是好的遵循了:
git fetch --all --prune
git branch -av
...這樣做可以清理你的分支列表,顯示您的本地和遠程比較提交信息。
此外,如果與團隊一起工作,確保他們在繼續前進之前知道這一點。您不希望他們在刪除最後一次提交和推送之前拉或推分支。
閱讀此答案,一旦您刪除所需的提交,只需推送到遠程。 35 012 012 012 012 012 012 012 012 – CodeWizard