idea使用git更新代碼 : update project(git merge、git rebase)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM