2014-04-03 54 views
1

我做了一個錯誤的提交,目錄中有很多文件(/vendor/bundle/*)。之後,我試圖通過更改.gitignore來修復它,所以我又做了2次提交。從過去的git提交中刪除文件

如何從以前的所有提交中刪除/vendor/bundle/*目錄(不影響任何工作文件或其他提交的文件)?

回答

3

您可以使用一個交互式的rebase從你過去的刪除目錄提交:

# Go back 3 commits 
git rebase -i HEAD~3 

你會看到你的編輯器中打開與提交的清單:

pick <HEAD~2> Commit /vendor/bundle/* 
pick <HEAD~1> OMG ignore /vendor/bundle/*! 
pick <HEAD> OMG ignore /vendor/bundle/* again! 

選擇提交哪裏您提交目錄並用edit替換pick

edit <HEAD~2> Commit /vendor/bundle/* 
pick <HEAD~1> OMG ignore /vendor/bundle/*! 
pick <HEAD> OMG ignore /vendor/bundle/* again! 

rebase會回滾到提交併停止。然後執行以下操作:

git rm -r -- /vendor/bundle 
git commit --amend --no-edit 
git rebase --continue 

你可以閱讀更多有關從FREE online Pro Git book重寫提交歷史。