2015-11-04 108 views
2

我有一個功能分支有幾個提交(見下文)。由於分支,主人也增加了一些提交。壓縮Git合併後提交

因此,我將master合併到feature分支中。

git checkout feature 
git merge master 

這將導致以下日誌歷史上feature分支:

* E (HEAD) merging master into feature 
|\ 
| * D feature commit 2 
| | 
| * C feature commit 1 
* | B master commit 2 
|/ 
* A master commit 1 

在現實中,特徵路徑上提交的數量大(100+),我想他們壓扁所有。

有沒有辦法只在保留master行上的那些功能分支時壓扁提交?

+0

你還想要的結果有一個承諾的特性分支,並與主合併,還是要掌握上要應用所有的工作沒有分支? – Nayuki

+0

我認爲第一個(如果我理解正確的話)。基本上在上面的圖中,C和D應該被壓縮成一個提交,並且應該保留從'master'(A,B)提交的提交。這樣我就可以將C-> D-> E直接合併到這個分支的'master'中。再次感謝! – user2490003

+0

另一個問題 - 你的功能分支上的歷史是完全線性的,還是有傳入或傳出的合併? – Nayuki

回答

3

是的,你可以。所以,你要打開你的問題提交圖表到這個新圖:

* E (HEAD) merging master into feature 
|\ 
| * D feature commit (squashes 1 and 2) 
* | B master commit 2 
|/ 
* A master commit 1 

的過程:

  1. 確保你的工作樹是乾淨的。沒有未提交的更改,沒有階段性更改,沒有未跟蹤的文件。
  2. 確保您位於功能分支上。
  3. git reset --hard *Hash of D on feature branch*
  4. git reset --soft *Hash of A on master*
  5. git commit與你想要的信息。
  6. git merge master
+0

不要忘記在#4之後階段更改#4 –

+2

@CodyStott分期已經暗示軟復位,儘管 – Nayuki

+1

啊好點,我以前從來沒有使用'soft'選項。很高興知道。 –