想象一下,您已經提交了多個更改(在單獨的提交中)。例如,我們有3個提交:A,B和C.在git中刪除某個提交中的文件(回到歷史記錄)
現在,您已經發現在提交B中添加了您不應該提交的某個文件(包括一些更改)。
如何刪除該提交中的文件?
一個例子會很棒。
感謝
想象一下,您已經提交了多個更改(在單獨的提交中)。例如,我們有3個提交:A,B和C.在git中刪除某個提交中的文件(回到歷史記錄)
現在,您已經發現在提交B中添加了您不應該提交的某個文件(包括一些更改)。
如何刪除該提交中的文件?
一個例子會很棒。
感謝
git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD
此命令將從所有提交[歷史]刪除文件。
警告:如果您已經與他人分享您的作品,建議不要使用此命令。請確保您在使用此命令之前瞭解其全部含義。
你也可以做
git rebase --interactive A
和編輯提交b不得與包括有問題的文件
但同樣的警告適用 ,如果你所做的更改任何對文件提交B之後,這些將失敗申請
但是從所有提交中刪除文件並不是真的需要。也許這個文件在很久以前就被推了一次,並且不需要再被改變和推送,對吧? – Hossein
@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