簡體   English   中英

git rebase(如果沒有沖突),否則git merge

[英]git rebase (if no conflicts) otherwise git merge

當我的分支與master沒有沖突時,我更喜歡做一個git rebase ,因為它保留了一個簡單的歷史記錄。

但是當存在沖突時,有時rebase會讓我解決每個遠程提交的沖突,這是更多的工作。 此外,我認為如果存在沖突,則沖突解決引入新錯誤的概率更高,因此在這種情況下我更願意進行merge ,這清楚地記錄了我開始編碼的位置,我做了什么,以及我是如何解決沖突的。

所以我一直這樣做:

git fetch -> git rebase 

而且,如果有任何沖突:

git rebase --abort
git merge

我發現自己每天都會這樣做幾次。 有沒有內置的方法來實現這一目標? 或者我應該創建一個git別名?

我更喜歡手動檢查傳入的提交, 然后決定rebase-vs-merge,但實際上你可以使用git rebase在完成rebase時以零(成功)狀態退出的事實自動執行此操作,並且非零(失敗)狀態,如果沒有。 因此,您可以編寫一個小的shell腳本或適合用作shell別名的單行命令:

git fetch && { git rebase || { git rebase --abort && git merge; } }

它表示運行git fetch ,如果成功,運行一系列支持的命令:

  • git rebase ,如果成功,別的什么都沒有; 要么

    • git rebase --abort ,如果成功, git merge

(實際上並不需要內括號,因為&&||更緊密地綁定,至少在sh和bash中。它們更多是為了清晰意圖。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM