不要把 Pull 當(dāng) Fetch 用

前言:最近遇到一個(gè)坑,我居然之前都沒(méi)遇到過(guò),還是自己開(kāi)發(fā)太少了,git 用的太少了

背景

現(xiàn)在有兩個(gè)遠(yuǎn)程倉(cāng)庫(kù):

  • upstream:一個(gè)多人協(xié)作的遠(yuǎn)程倉(cāng)庫(kù),自己沒(méi)有 push 的權(quán)限。
  • origin:自己的遠(yuǎn)程倉(cāng)庫(kù),自己有 push 權(quán)限,每次修改代碼以后先 push origin,然后再給 upstream 提 PR。

現(xiàn)在有四個(gè)分支:

前是分支的名字)

  • branch1:upstream 的 branch1
  • branch2:upstream 的 branch2
  • branch1:origin 的 branch1
  • branch2:origin 的 branch2

現(xiàn)在我要在 Branch1 上做開(kāi)發(fā)。

正確的流程

每次我要向自己的 origin branch1 代碼倉(cāng)庫(kù) push 的正確流程應(yīng)該是:

前面是操作,后面是解釋。... 表示一系列的操作 )

  • git add:add 這次修改
  • git commit:提交這次修改
  • git pull --rebase upstream branch1:從 upstream 拉取別人最新的代碼,rebase 到當(dāng)前分支
  • ...:解決 rebase 的沖突
  • git push --set-upstream origin:提交代碼到 origin

這個(gè)流程沒(méi)什么問(wèn)題。當(dāng)我們想切換到一個(gè)新的分支以后,并從 upstream 拉取代碼的時(shí)候,使用 pull 就有大問(wèn)題。

使用 Pull 的大問(wèn)題

當(dāng)我們?cè)?branch1 選擇使用 pull 命令拉取 branch2 的時(shí)候,就有大問(wèn)題!哪怕你是這么寫(xiě)的:

git pull upstream branch2:branch2

確實(shí)這樣會(huì)在本地創(chuàng)建一個(gè)新的分支 branch2 但是這個(gè)命令會(huì)自動(dòng)把 branch1 和 branch2 合并。導(dǎo)致你的終端出現(xiàn)一堆 git 的問(wèn)題。然后你明明覺(jué)得:我不就是 pull 了一個(gè)分支嘛?怎么這么多問(wèn)題。

因?yàn)?git pull 本質(zhì)就是 fetch + merge。而且是和當(dāng)前分支 merge。而我們只想使用 fetch 的功能。

所以想清楚如果只是拉代碼而沒(méi)有合并,一定只用 fetch!

所以應(yīng)該寫(xiě)成:

git fetch upstream branch2:branch2

這樣就不會(huì)和 branch1 合并了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1. GIT命令 git init在本地新建一個(gè)repo,進(jìn)入一個(gè)項(xiàng)目目錄,執(zhí)行g(shù)it init,會(huì)初始化一個(gè)re...
    江邊一蓑煙閱讀 826評(píng)論 0 0
  • git官方英文操作文檔參考[https://git-scm.com/book/zh/v2/Git-%E5%9F%B...
    dmengmeng閱讀 489評(píng)論 0 0
  • 查看、添加、提交、刪除、找回,重置修改文件 git help # 顯示command的help git sho...
    Swiftor閱讀 2,138評(píng)論 0 2
  • Basic Operation 分支管理切換分支git checkout git checkout -b #...
    hiph閱讀 136評(píng)論 0 0
  • 配置 首先是配置帳號(hào)信息ssh -T git@github.com # 登陸 github 修改項(xiàng)目中的個(gè)人信息 ...
    guanguans閱讀 757評(píng)論 0 3