2011-08-13 77 views
31

無論如何刪除我的github提交歷史嗎?我不想失去所有的提交,只是最後10個被推送給github的提交。我似乎無法弄清楚如何做到這一點。刪除Github提交歷史記錄

+4

請參閱http://stackoverflow.com/questions/495345/git-removing-selected-commits-from-repository請注意,如果有其他人在同一個存儲庫上進行協作,則做這種事情是一個壞主意。克服歷史上的顛簸並向前推進通常會更好。 –

+0

偉大的鏈接。謝謝! –

回答

62

只需選擇你想回去,並在你的克隆哈希做:

git reset --hard hash# 
git push -f origin branch 

其中branch是要推動分支的名稱。瞧。小心推動力量。你可能想複製你的工作目錄,直到你熟悉它爲止。

+1

工作就像一個魅力!除了我沒有意識到該分支意味着我的分支名稱:P –

+1

你如何找到哈希#? –

+1

我使用tig查看我的哈希歷史記錄以找到我想要返回的哈希歷史記錄。您也可以使用gitk或git日誌或其他工具,如源代碼樹。存在多種選項來檢查歷史記錄並找到散列表 – matthewdaniel

5

如果你想做到這一點,你可以用HEAD~10

git reset --hard HEAD~10 

git push -f origin master 

不建議做刪除服務器提交歷史,尤其是:如果你有一個團隊的人對這個回購工作。

如果你有一隊人在這方面的工作,我會建議通過增加另一個承諾是撤消你的代碼,你不想回落。

2

我上傳了所有我的文件到我的第一個github項目,包括一些設置文件與祕密密鑰。我必須回去並刪除在添加我的.gitignore文件之前包含的所有版本,並從項目的緩存中刪除所有設置文件。

How I did this

gedit ./.git/logs/HEAD

找到 '新的根' 要刪除之前所有的40個字符的SHA哈希。將其複製到剪貼板並關閉它。 (您可能會也可能不會使用gedit,這是Linux的默認文本編輯器)。

$> gedit ./.git/info/grafts

粘貼在這裏SHA。轉到您的項目目錄。

$> cd ../..

$> git filter-branch

強制推到主,否則會阻止您嘗試刪除你的歷史。

$> git push --force -u origin master

刪除您grafts文件。

$> rm ./.git/info/grafts

沒關係

嗯,我的回答是隻成功了一半。我的公共活動RSS提要仍然鏈接到所有詳細說明我想刪除的信息的差異。顯然,there is no way to delete this,但你應該閱讀Change your Password,並更新任何可能意外上傳的敏感數據。

+1

我只是想補充一點,因爲我今天遇到了它,這是由於我爲自己創建的非常不尋常的情況。但是,一旦您完成[刪除敏感數據](http://help.github.com/remove-sensitive-data/)步驟,您就可以執行一個解決方案,即創建一個新存儲庫並推送所有_now clean_提交,並刪除舊的存儲庫。這會使您在公共活動飼料中的舊分支/差異鏈接失效,並且由於回購不再存在,github將拋出404。 –

0

隨着Git安裝,您還可以右鍵單擊您的存儲庫文件夾 - Git GUI Here

選擇存儲庫 - 可視化所有分支歷史記錄

右鍵單擊所需的提交 - 將主分支歷史記錄重置爲此處

現在你有3種選擇:

Git

一旦選定,選擇文件 - 刷新

如果在GitHub Desktop的提交中選擇了Revert,然後再次恢復,以便我們回到原始代碼,然後只是希望清理這些對Revert提交,我們可以設法解決這個問題。

相關問題