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