idea使用git更新代碼 :
選中想要更新的項目,右鍵點擊 git => repository => pull
這樣使用一次后idea會自動建立選中分支的遠程跟蹤分支,以后可直接點擊下圖按鈕,不需要再選分支,除非要拉取另一分支
update project 的兩個選項
說明:為避免在前后相對位置懵逼,先講明越靠后的提交越新,越頂端的提交越新
git merge
git merge b # 將b分支合並到當前分支
圖解(主分支master git rebase test)
D---E test
/
A---B---C---F master
使用merge合並:
D--------E
/ \
A---B---C---F----G
工作流
git pull (或fetch && merge)
編輯沖突文件
git pull
git rebase
git rebase 目標分支
rebase:翻譯成中文是重新設定
git rebase 你其實可以把它理解成是“重新設置基線”,將你的當前分支重新設置開始點。
rebase會把你當前分支的 commit 放到最后面,將rebase后的目標分支的commit當作基點放在前面,通俗的說就是將目標分支的提交作為你當前分支的基點,所以叫變基
圖解(主分支master git rebase test)
D---E test
/
A---B---C---F master
git rebase test合並:
A---B---D---E---C'---F' test, master
如圖主分支的基點變成了test的幾個commit,可能會覆蓋別人代碼,所以不要在公共分支使用rebase
工作流
git rebase
while(存在沖突) {
git status
找到當前沖突文件,編輯解決沖突
git add -u
git rebase --continue
if( git rebase --abort )
break;
}
區別
- 兩個使用場景是不一樣的,merge只是合並目標分支的內容,rebase也合並另外一個分支的內容,但是會把本分支的commits頂到最頂端
- git merge 會生成一個新的合並節點,而rebase不會
使用場景
- 都在同一個分支開發,為了提交記錄更好的可讀性,用
git pull --rebase origin master
- 開發分支拉取主分支時。為了讓你最新開發的提交記錄在最前面,也建議用
rebase
假設我們現在有3個分支
- master分支:線上環境使用的分支
- testing分支:測試環境使用的分支
- my_feature分支:開發新功能的分支,也就是當前分支
A. 假設我在my_feature上開發了一段時間,之后另外的同事開發的功能正式上線到master分支了,那么我可以在當前的分支下rebase一下master分支,這樣我這個分支的幾個commits相對於master還是處於最頂端的,也就是說rebase主要用來跟上游公共分支同步,同時把自己的修改頂到最上面
B. 我在my_feature上開發了一段時間了,想要放到testing分支上,那就切到testing,然后merge my_feature進來,因為是個測試分支,commits的順序無所謂,也就沒必要用rebase (當然你也可以用rebase)
注意
-
不要在公共分支使用rebase拉取其他分支,rebase會打亂時間線,使遠程倉庫和本地倉庫對不上,導致其他人無法推送代碼
-
使用git pull時默認是merge, 加 --rebase參數使其使用rebase方式 : git pull --rebase