2013-05-27 29 views
11

有沒有辦法在實際合併它們之前檢查兩個分支之間合併的結果?在實際合併之前檢查git-merge的結果

當試圖將分支A合併到分支B時,我通常會從B檢出一個臨時分支,並將它與分支A合併,然後創建一個diff分支,或者只是檢出該臨時分支並檢查是否所有東西都是在合併A到B之前工作正常。

git是否提供了一個命令或功能來完成此操作?

+3

'git merge --no-commit' –

回答

18

由於瑪麗安Theisen建議,你可以做到這一點做的合併,而無需提交

git merge --no-commit <branchname> 

你可以背出來的,與

git reset --hard 

而且合併,請記住,它總是容易備份在Git中。你可以做一個完全合併,包括提交,檢查完整的結果,如果你改變了主意,你可以

git reset --hard HEAD^ 

扔掉合併,並回到了合併之前提交。

事實上,在合併過程中解決的任何一點,你可以做

git reset --merge 

要中止合併,扔掉剛合併的變化。

2

爲什麼要麻煩?只要做合併,測試它,如果你不喜歡它,那麼git reset --hard HEAD^就會回到預合併狀態。做一些臨時或中途合併會增加你的工作量,無論你決定是否要保持合併。

11

我稱之爲「代碼審查工作流程」,並始終執行此操作。

git merge --no-commit --no-ff branchname 

沒有--no-ff標誌,如果混帳可以做一個快進那麼它會做到這一點。 (正如預料的那樣,在快進的情況下,沒有合併提交創建。)

我在.gitconfig此別名設置爲方便:

rev = merge --no-ff --no-commit 

所以,我可以簡單地做:

git rev branchname 

這個想法是,所有的功能都在獨立的分支開發,每個功能都由作者以外的人審查和合並。正如其他答案指出,你可以中止合併:

git reset --merge 

並要求作者作出更多的更改。

成僅僅在合併查看日誌犯我用這個別名其他:

revlog = log --first-parent 

這樣的日誌成爲大步驟的時間表:功能,通過功能,而不是承諾在提交。

+0

在快速合併中沒有風險。快速合併是最好的:沒有風險,沒有污染,只是將分支指針向前移動。爲什麼有人會那麼隨便地使用--no-ff標誌對我來說是個謎。如果有任何人可以解釋這一點,請這樣做。根據我自己的經驗,我會警告人們在決定採取何種方式之前真正理解快進方式。 –

+0

@PaulvanLeeuwen我同意你的看法。但這不是「隨便使用'--no-ff'標誌」的情況。這是在合併之前查看更改的具體問題的答案。雖然快進不是合併,但使用'--no-ff'似乎與OP的意圖相符。 – janos