2016-11-19 86 views
0

同時學習GIT和GitKraken。我在一個文件中做了小改動 - aa.cpp,在GitKraken的幫助下提交併推送到遠程存儲庫。突然間,我發現我推送了我不喜歡的項目目錄中的所有文件。刪除上次提交併推送

現在我需要從存儲庫中刪除不需要的文件。我更喜歡從遠程存儲庫中刪除最後一次推送,並嘗試再次提交併推送。如何使用GIT命令刪除上次提交。如何使與GitKraken相同?

+0

閱讀此答案,一旦您刪除所需的提交,只需推送到遠程。 35 012 012 012 012 012 012 012 012 – CodeWizard

回答

4

如果您已經推送了此提交,那麼可能是其他人已經拉動了該分支。在這種情況下,重寫你的分支的歷史是不可取的,則應該恢復這個承諾:

git revert <SHA-1> 
git push origin branch 

這裏<SHA-1>是要刪除的提交的提交哈希值。要找到這個散列值,只需在分支上鍵入git log並檢查第一個條目。

實際使用git revert增加了這是一個新的提交,它是要刪除提交的鏡像。這是在公共分支上撤消提交的首選方式,因爲它只是向分支添加新信息。

如果你確信你使用這個分支的唯一的人,那麼你有另一種選擇:

git reset --hard HEAD~1 

其次

git push --force origin branch 

但是,你應該只,如果沒有人使用這個選項其他人正在分享這個分支。

0

我確實希望你在一個單獨的分支上工作,所以不是主人(或者如果你使用git-flow開發的話)。對於我的例子中,我將使用my-broken-branch作爲分支名;)

我的步驟是:
刪除遠程分支,我們打算以後推更新的版本。

git push origin :my-broken-branch 

接下來從本地分支中刪除最後一個提交。 HEAD^1指的是比當前更早的提交。

git reset HEAD^1 

現在繼續,只需添加您需要的文件並按照您的慣例進行提交。最後推動你的分支到遠程。它將在那裏重新創建分支,並且沒有人必須知道已更改的提交。

git push origin my-broken-branch 
0

的方式我去了解它是通過鍵入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 

...這樣做可以清理你的分支列表,顯示您的本地和遠程比較提交信息。

此外,如果與團隊一起工作,確保他們在繼續前進之前知道這一點。您不希望他們在刪除最後一次提交和推送之前拉或推分支。