2016-06-15 39 views
0

我覺得這個問題很一般,所以很抱歉沒有具體。當我修改一些代碼來嘗試新的東西時,無論項目或語言如何,如果全部失敗,我可能不得不恢復到之前的Git提交。但是在做出這些不確定的修改(讓我們稱之爲X)的過程中,我還做了一些很好的更正或補充(讓我們稱它們爲Y),我想保留它們。編碼方法:在嘗試新東西的同時保持好的東西

是否有一種巧妙的方法將X和Y分開,以便在一天結束時我可以保留Y並丟棄X?

+0

X和Y是單獨提交的,還是它們都歸入工作目錄中的更改? –

+0

只是爲了在[0x5453的答案](http://stackoverflow.com/a/37840868/4233593)#2上展開,如果你有很多需要爲不同的提交進行排序的更改,那麼你應該創建一個交互用'git add -p'修補。請參閱[我的答案](http://stackoverflow.com/a/37769129/4233593)有關創建精度修補程序時分裂人羣是不夠的。 –

回答

3

這是我做的:

  1. 創建一個新的分支爲我的「不確定的修改」。
  2. 正如我要去做的那樣,可以獨立的小提交。
  3. 如果我的提交量不足以僅保留我需要的更改,我將不得不返回並拆分舊的提交。交互重新綁定到有問題的提交,重置爲HEAD〜,並將更改拆分爲相關的提交。
  4. Rebase/cherry-pick提交我想保留回原始分支。
  5. 壓扁那些小承諾,保持歷史清潔。
+1

優秀的答案,重點* *「做出可以獨立的小提交」* –

+0

謝謝!還不熟悉分割/壓縮提交和重新綁定,但它看起來是一個不錯的方法。 – Ben

0

也許這是隱含在0x5453的答案,但我只是想添加一個精確度,這是我的問題的核心。要進行小型獨立提交,一個非常好的功能是交互式添加/提交。我個人使用。這使我可以選擇我的修改的一小部分來收集一個邏輯上同質的提交。這樣,我可以事後組織好幾項變更,並留下不確定的變化(如果需要推/拉,可能會隱藏它們)。當我一次完成許多不相關的修改時,這非常方便。

這就是說,交互式地交互式地執行它仍然非常重要,不會在大量的變化中丟失。