2016-06-28 88 views
1

有時我會對文件進行更改以便於調試,並且我希望確保不會意外地提交這些更改。忽略git中的調試更改

我採取的一種方法是包含一個特殊評論,如// DEBUGGING和拒絕嘗試提交此評論的預提交掛鉤。問題是需要在存儲庫的所有副本中設置鉤子,並且我必須記住添加註釋以及腳本查找的確切形式。

也有git update-index --assume-unchanged,但它只適用於文件級別,有時我會將調試更改與實際的待提交更改混合在一起。

在這種情況下還有其他工具可以幫助嗎?我已經開始想象使用第二個「臨時變化」索引的設置,例如狀態是根據該索引進行計算的,但是提交仍然是從主索引進行的......但是在我用這個想法過分考慮之前,我想要檢查我是否重複了任何現有的工作。

+0

您是否打開IDE特定提示/答案?或者尋找純粹基於git的東西? – dubes

+0

你真的應該養成審查你即將提交的代碼的習慣。除此之外,將你的代碼封裝在一個'if(DEBUG_MODE){//做某事}'塊中並在應用程序級別打開/關閉它。 – ceejayoz

+0

「調試」分支會出現什麼問題? –

回答

1

將調試註釋放在代碼中是沒有用的,因爲您會(無疑)也會執行諸如註釋等事情,插入printf("foo is %d", foo)或其他任何內容,而不記得添加註釋。

因此,您需要調整您的工作流程,以便您不會提交您的更改

在工作副本乾淨的狀態下進行調試。要實現這一點,要麼是git commit要麼是git stash的更改。當您完成調試時,git reset --hard將您帶回您開始的位置。

如果您確實需要提交(例如分享您的代碼),請在分支名稱中使用-debug或類似名稱提交給單獨的分支。

另一個良好實踐:在推動之前檢查每個提交與git show。閱讀你正在編寫的代碼本身就很有價值(你用這種方式找到了多少格式化問題或者思維是驚人的)。它還捕獲正在進行的調試。

3

這個問題是通過訓練自己成爲提交時遵循特定規則例程的習慣來解決的。其次,在發佈它們之前檢查你的提交。

訓練自己永遠不要使用git commit -a。始終使用git commit --patch並交互式地選擇每個大塊。學習如何使用s)plit和e)dit來做精細的變化選擇。拆分每個可以拆分的塊,並注意您批准提交的每個更改。

在編輯提交消息時,將git diff --cached的輸出讀入編輯緩衝區,該緩衝區僅顯示您提交的更改。在撰寫評論時請參考此材料,並隨時刪除它。如果在git diff --cached中看到任何不需要的東西,則清空緩衝區並保存並退出,以中止提交。

在推出之前檢查您的提交。如果您看到一些意外添加的調試打印,請使用git reset --patch HEAD^以交互方式執行一組更改,以刪除不需要的更改。然後git commit --amend將這些刪除組合到提交中。由於工作樹保持完好,在這之後,這些更改再次只是局部修改。

不要將提交視爲最終可交付成果。假設提交正在進行中,並準備在發佈它們之前通過多次迭代對它們進行優化,在此期間將大型提交分成較小的提交,或將較小的提交壓縮爲較大的提交,重新排列順序並進行其他更改。

寫下預先推送的事項清單,以便在要發佈的新提交系列中查找並遵守該清單。