git fetch 与 git pull
文章目录
- git flow 流程
- git fetch 与 git pull 区别
- git fetch 工作流程
git flow 流程
先来看一张图吧:
大致流程是这样的:我们在本地(工作区)编写好代码,然后执行git命令git add 添加到暂存区,然后使用git commit提交到本地分支,然后使用git push推送到远程分支。
git fetch 与 git pull 区别
那么本地如果需要同步远程仓库的代码,一般是两种做法,一种是使用git fetch先将远程代码拿下来,然后再合并到本地分支;第二种就是直接使用git pull将远程代码直接与本地代码进行合并,包括本地分支和远程分支。
看下图,git fetch 命令更新代码,本地的库中master的commitID不变,但是与git上面关联的那个orign/master的commit ID变成了和远程代码库相同了。这时候我们本地相当于存储了两个代码的版本号,我们还要通过merge去合并这两个不同的代码版本,如果这两个版本都修改了同一处的代码,这时候merge就会出现冲突,然后我们解决冲突之后就生成了一个新的代码版本。
而下面的git pull命令会将本地的代码更新至远程仓库里面最新的代码版本,包含本地的分支,如果出现冲突,也需要手动解决。
虽然git pull看起来像git fetch+get merge,但是根据commit ID来看的话,他们实际的实现原理是不一样的。
这里建议是分两步做,在merge前可以看修改了什么内容,是否有冲突的代码,可以提前解决,防止冲突。
git fetch 工作流程
首先,先得到远程库上master分支的东西:
git fetch origin masterorigin是远程仓库默认名,如果在 remote add的时候自己重新取了远程仓库名,那就用自己取的名字;master则是远程分支名。
这时候只是相当于从远程库拷了代码到本地,还没有和本地的merge,这就是为什么不直接pull,因为先fetch再merge我们就可以先看一下拉取下来的东西,再决定是否merge。
如果要在本地分支查看和刚刚拷下来的东西有什么区别,就用:
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的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: php mysql 连接不上_php连接
- 下一篇: 图片在section上下居中_新媒体运营