git fetch 与 git pull
文章目錄
- git flow 流程
- git fetch 與 git pull 區(qū)別
- git fetch 工作流程
git flow 流程
先來看一張圖吧:
大致流程是這樣的:我們?cè)诒镜?#xff08;工作區(qū))編寫好代碼,然后執(zhí)行g(shù)it命令git add 添加到暫存區(qū),然后使用git commit提交到本地分支,然后使用git push推送到遠(yuǎn)程分支。
git fetch 與 git pull 區(qū)別
那么本地如果需要同步遠(yuǎn)程倉庫的代碼,一般是兩種做法,一種是使用git fetch先將遠(yuǎn)程代碼拿下來,然后再合并到本地分支;第二種就是直接使用git pull將遠(yuǎn)程代碼直接與本地代碼進(jìn)行合并,包括本地分支和遠(yuǎn)程分支。
看下圖,git fetch 命令更新代碼,本地的庫中master的commitID不變,但是與git上面關(guān)聯(lián)的那個(gè)orign/master的commit ID變成了和遠(yuǎn)程代碼庫相同了。這時(shí)候我們本地相當(dāng)于存儲(chǔ)了兩個(gè)代碼的版本號(hào),我們還要通過merge去合并這兩個(gè)不同的代碼版本,如果這兩個(gè)版本都修改了同一處的代碼,這時(shí)候merge就會(huì)出現(xiàn)沖突,然后我們解決沖突之后就生成了一個(gè)新的代碼版本。
而下面的git pull命令會(huì)將本地的代碼更新至遠(yuǎn)程倉庫里面最新的代碼版本,包含本地的分支,如果出現(xiàn)沖突,也需要手動(dòng)解決。
雖然git pull看起來像git fetch+get merge,但是根據(jù)commit ID來看的話,他們實(shí)際的實(shí)現(xiàn)原理是不一樣的。
這里建議是分兩步做,在merge前可以看修改了什么內(nèi)容,是否有沖突的代碼,可以提前解決,防止沖突。
git fetch 工作流程
首先,先得到遠(yuǎn)程庫上master分支的東西:
git fetch origin masterorigin是遠(yuǎn)程倉庫默認(rèn)名,如果在 remote add的時(shí)候自己重新取了遠(yuǎn)程倉庫名,那就用自己取的名字;master則是遠(yuǎn)程分支名。
這時(shí)候只是相當(dāng)于從遠(yuǎn)程庫拷了代碼到本地,還沒有和本地的merge,這就是為什么不直接pull,因?yàn)橄萬etch再merge我們就可以先看一下拉取下來的東西,再?zèng)Q定是否merge。
如果要在本地分支查看和剛剛拷下來的東西有什么區(qū)別,就用:
git diff yourlocalbranch oringin/master下來就是在當(dāng)前分支上,合并origin/master,就要用merge了:
git merge oringin/master還可以用:
git rebase origin/master如果有沖突,那就解決沖突,再commit。若實(shí)在解決不了弄得亂七八糟想恢復(fù)可以:
git reset merge還有就是如果明明添加了遠(yuǎn)程分支,但是用 git branch -a又看不到,怎么辦呢?運(yùn)行:
git remote update總結(jié)
以上是生活随笔為你收集整理的git fetch 与 git pull的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php mysql 连接不上_php连接
- 下一篇: 图片在section上下居中_新媒体运营