有時我最終會得到一個有很多變化的工作樹,主要是在編碼後很急 - 變化很多,可以容納20個提交,遍佈2個或3個分支。要清理工作樹,並很好地犯下的一切,我遵循這個不愉快的工作流程:從工作樹中的一大堆變化中做出乾淨的承諾
使用
git add -p
檢查在工作樹中的所有帥哥,沒有保存任何的指數(即回答「沒有,不要把這個「放到每一個大塊頭」)。與此同時,我嘗試將hunks進行精神分組,並採取我應該用我所看到的人體構建的提交文件(在文本文件中)。當我將每個塊都分配給一個提交(在我的筆記中)後,我再次開始
git add -p
,並且回答「yes,stage this」僅適用於進入第一個提交的塊。在完成了所有的選擇並選擇了我想要的選項後,我實際上做了提交。只要在
git add -p
中有剩餘的剩餘部分,重複步驟2。這意味着我會在我的筆記中提交所有提交的。
這顯然是一次處理很多變化的非常愚蠢的方式。有沒有一種很好的方式,從很多變化開始,將它們整理出來,然後在他們正確的分支中完成一組好的提交?
也許有一種方法可以同時在多個索引中增量構建多個提交。或者,也許我應該將所有更改都歸入一個大提交,然後以某種方式將其分成多個?或者也許有辦法(ab)使用git stash
來幫助將更改分組在一起?
我不認爲,除了我基本上從不使用筆記,這個工作流程有很多錯誤。但我喜歡用'git citool'來直觀地選擇每個單獨提交中包含的文件或文件行。是的,像下面提到的'git rebase -i',有時候與'git commit --fixup'或'git commit --squash'一起幫助排序。 – 2013-04-27 20:23:48
啊,最後,你可以切換到你的主題分支和'git cherry-pick'從你的「工作分支」提交相應的提交。 – 2013-04-27 20:25:49