在兩個分支之間模擬git merge
是否有任何方法,即當前工作分支和主設備,但不作任何更改?如何在沒有實際合併的情況下測試合併
當我必須做出git merge
時,我經常發生衝突。有沒有什麼方法可以先模擬合併?
在兩個分支之間模擬git merge
是否有任何方法,即當前工作分支和主設備,但不作任何更改?如何在沒有實際合併的情況下測試合併
當我必須做出git merge
時,我經常發生衝突。有沒有什麼方法可以先模擬合併?
我不認爲有一種方法來模擬將發生什麼,直到你嘗試合併。但是,如果在合併之前確保git status
的輸出爲空,那麼繼續嘗試就很安全。如果你得到衝突,你可以立即回到你之前是在州:
git reset --merge
由於git的1.7.4,你也可以通過做中止合併:
git merge --abort
(如the commit message that added that option explains,這是爲了與git rebase --abort
等一致而添加的。)
@Amber的答案正在回答正在問什麼「如何模擬合併」。使用'--no-commit'在我看來更容易 – samirahmed
@samirahmed:@Amber更真實地回答了這個問題,當然,雖然用'--no-commit'你仍然在改變索引和工作樹,並不完全是「沒有做任何改變」:)我的觀點是,當人們提出這樣的問題時,通常是因爲他們沒有意識到查看合併過程的最佳方式是僅僅檢查merge_,通常是因爲他們沒有意識到如果事實證明存在問題,回到之前的狀態是多麼容易。 –
我不知道這是否被添加到了最新版本的git中,但在文檔(1.8.4)中,它聲明「'git merge --abort'相當於'git reset --merge',當MERGE_HEAD '存在「,所以更容易記住:) –
最近我已經能夠使用git merge --abort
。但是,只有在合併衝突時才能使用。如果你確定你不想提交,那麼使用上面提到的其他方法。
如果我想一個主題分支主比較的變化,我覺得最簡單,最安全的做到以下幾點:
git checkout master
git checkout -b trial_merge
git merge topic_branch
完成合並後,很容易就看到主的綜合變化
git diff master
完成後,只需刪除trial_merge分支
git checkout master
git branch -D trial_merge
這樣,主分支從不改變。
我用:
根據git merge --ff-only
拒絕合併,並與非零狀態退出,除非當前HEAD已經啓動最新或合併能被解決爲快進。
這不是一個真正的模擬,因爲在兩個分支之間沒有衝突的情況下會有快進合併。但是如果發生衝突,您會收到通知,並且不會發生任何事情。
爲什麼不只是創建一次性分支(git checkout -b),並在那裏做一個測試合併?
另請參閱http:// stackoverflow。com/questions/501407/is-there-a-git-merge-dry-run-option –
[是否有git-merge --dry-run選項?](http://stackoverflow.com/questions/501407/is-there-a-git-merge-dry-run-option) –