Idea 獲取 git 倉庫時更新類型update type 的選擇
各選項代表內容:
注意:
Update Type 選擇
- Merge:結果與運行 git fetch ; git merge 或 結果相同 git pull。
- Rebase:結果與運行 git fetch ; git rebase 或 結果相同 git pull --rebase。
- Branch Default:此選項用於選擇應用分支的默認命令。default 命令 branch. 在 .git/config 配置文件的部分中 指定 。
使用場景:
Merge:因為成員的代碼開發工作已經完成了,也不需要再保留這個分支了,所以我們可以把這個成員分支 merge 到主分支上,當然沖突在所難免,手工解決的工作肯定逃不掉,但是利大於弊不是嗎。merge 以后,分支就不存在了,但是在 Git 的所有分支歷史中還能看到身影。
Rebase:如果修改了某個公用代碼的 BUG,這個時候就應該是把所有的 OEM 版本分支 rebase 到這個修復 BUG 的分支上來,在 rebase 過程中,Git 會要你手動解決代碼上的沖突,你需要做的就是把修復 BUG 的代碼放到目標分支代碼里面去。rebase 的結果是:所有的分支依然存在。
比如說自己在自己分支開發了一段時間,之后另外的同事開發的功能正式上線到 master 分支了,那么我可以在當前的分支下 rebase 一下 master 分支,這樣我這個分支的幾個 commits 相對於 master 還是處於最頂端的,也就是說 rebase 主要用來跟上游同步,同時把自己的修改頂到最上面
- merge 結果能夠體現出時間線,但是 rebase 會打亂時間線。
- 而 rebase 看起來簡潔,但是 merge 看起來不太簡潔。
- 最終結果是都把代碼合起來了,所以具體怎么使用這兩個命令看項目需要。
還有一點說明的是,在項目中經常使用git pull來拉取代碼,git pull相當於是git fetch + git merge,如果此時運行git pull -r,也就是git pull –rebase,相當於git fetch + git rebase