2013-01-18 115 views
0

我在Git中合併了一些提交,現在我需要刪除這個提交,因爲它有一些機密信息。我需要在合併之前將HEAD放入提交中。如何刪除提交?

+2

你是否試圖看看https://help.github.com/articles/remove-sensitive-data? – Ragnarokkr

+0

我使用了git reset --HARD HEAD〜1,但它將提交重置爲前一個不刪除它。我需要它被刪除 – Bipario

+0

啊,你只需要恢復前面的HEAD。好。 – Ragnarokkr

回答

1

我更喜歡使用git rebase來完成這項工作,因爲一個不錯的列表彈出來,我可以選擇提交擺脫。選擇你要多少提交到列表中,然後調用這樣

git rebase -i HEAD~3 

樣品列表

pick aa28ba7 Sanity check for RtmpSrv port 
pick c26c541 RtmpSrv version option 
pick 58d6909 Better URL decoding support 

Git會刪除提交爲您刪除任何行。

+0

我做到了,做了一個git-rebase來做呃...現在我該如何選擇提交? – Bipario

+0

謝謝..它有幫助..但提交併沒有完全刪除。它們仍然保存,任何人都可以將分支重置爲該提交。是否有可能刪除它compeletely? – Bipario

+0

Git將在一定天數後自動垃圾回收「懸掛」提交(不屬於任何分支或標籤)。您可以使用['git gc'](http://www.kernel.org/pub/software/scm/git/docs/git-gc.html)手動運行垃圾回收。 – ellotheth

0

還有另一種方法可以做到這一點,但在這種情況下我有一個解決方案。

假設您正在使用master分支。

首先我簽出提交我想成爲最後的主,並重新創建主分支。

git checkout 2fa59698256c4c3fb85c6e32741071797d5965b3 
git checkout -b master 

然後我拉回來強制服務器刪除它的歷史記錄。

git checkout --amend 
git push origin master --force 

這將清除所有提交後。

您可以使用git rebalse~x然後用力推...但是當我遇到麻煩時,我總是記得使用結帳,我總是在分支之間切換。