2012-11-08 134 views
0

想象一下,您已經提交了多個更改(在單獨的提交中)。例如,我們有3個提交:A,B和C.在git中刪除某個提交中的文件(回到歷史記錄)

現在,您已經發現在提交B中添加了您不應該提交的某個文件(包括一些更改)。

如何刪除該提交中的文件?

一個例子會很棒。

感謝

回答

1
git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD 

此命令將從所有提交[歷史]刪除文件。

警告:如果您已經與他人分享您的作品,建議不要使用此命令。請確保您在使用此命令之前瞭解其全部含義。

+0

但是從所有提交中刪除文件並不是真的需要。也許這個文件在很久以前就被推了一次,並且不需要再被改變和推送,對吧? – Hossein

+0

@Hsesein取決於你是否想從歷史中清除它。如果不是,那麼在下一次提交時刪除文件可能會更好。如果你想從整個歷史中刪除它,例如你在裏面有一些私人數據(比如密碼),如果有人已經提交了你的提交,你可能會倒黴 - 看看這個[Mercurial FAQ](http://mercurial.selenic.com/wiki/FAQ#FAQ.2FCommonProblems .I_committed_a_change_containing_nuclear_launch_codes.2C_how_do_I_delete_it_permanently.3F)適用於所有DVCS。 – peterph

1

你也可以做

git rebase --interactive A

和編輯提交b不得與包括有問題的文件

但同樣的警告適用 ,如果你所做的更改任何對文件提交B之後,這些將失敗申請

相關問題