2015-01-07 28 views
2

很多時候我正在開發一個應用程序,我會添加日誌語句,有時如果它有助於調試,die()斷言等等。本地測試,我沒有把任何東西都交給git。當我想通過功能分支中的提交將其轉移到臨時環境中時,我必須使用一堆調試類型代碼來提交它們。最後,當我準備將分支合併到發行版分支時,我希望將這些衆多的提交幾乎清理/編譯爲一個提交,並且就好像調試語句不在那裏一樣,因爲我最終提交了一個清理它們。清理git中的調試提交

是否有可能重寫git歷史記錄,將所有這些提交合併到一個乾淨的提交中,一旦我完成了我的特性分支?

回答

1

只要您尚未發佈的更改(git push),你可以放心地改寫歷史與git rebase

您可以git rebase -i <commit>~1其中commit是第一個從那裏你要開始清理,並在交互模式提交,你可以squash承諾以某種方式合併他們到一個大提交。你可以在這裏找到關於這個主題的很好的文檔:7.6 Git Tools - Rewriting History

另外,take a look into this,是一個小型的鉤子,我沒有阻止調試語句被提交,也許你覺得它很有用。

編輯:我看到你提到你需要將你的修改移到臨時區域。如果這意味着推動,那麼重寫歷史記錄可能會有問題,除非沒有其他人拉你的改變。重寫歷史會改變你的提交「沙」,所以團隊的其他成員可能會以重複的提交或衝突結束。另一方面,如果你推到某個地方,但只有你使用的是暫存區域,那麼你可以在本地重寫你的歷史記錄,然後再次用git push -f再次推送。它會用你的本地修改更新分支。

希望這會有所幫助!