git fetch 与 git pull

git flow 流程

先来看一张图吧:
在这里插入图片描述
大致流程是这样的:我们在本地(工作区)编写好代码,然后执行git命令git add 添加到暂存区,然后使用git commit提交到本地分支,然后使用git push推送到远程分支。

git fetch 与 git pull 区别

那么本地如果需要同步远程仓库的代码,一般是两种做法,一种是使用git fetch先将远程代码拿下来,然后再合并到本地分支;第二种就是直接使用git pull将远程代码直接与本地代码进行合并,包括本地分支和远程分支。

看下图,git fetch 命令更新代码,本地的库中mastercommitID不变,但是与git上面关联的那个orign/mastercommit ID变成了和远程代码库相同了。这时候我们本地相当于存储了两个代码的版本号,我们还要通过merge去合并这两个不同的代码版本,如果这两个版本都修改了同一处的代码,这时候merge就会出现冲突,然后我们解决冲突之后就生成了一个新的代码版本。

而下面的git pull命令会将本地的代码更新至远程仓库里面最新的代码版本,包含本地的分支,如果出现冲突,也需要手动解决。

在这里插入图片描述
虽然git pull看起来像git fetch+get merge,但是根据commit ID来看的话,他们实际的实现原理是不一样的。

这里建议是分两步做,在merge前可以看修改了什么内容,是否有冲突的代码,可以提前解决,防止冲突。

git fetch 工作流程

首先,先得到远程库上master分支的东西:

git fetch origin master

origin是远程仓库默认名,如果在 remote add的时候自己重新取了远程仓库名,那就用自己取的名字;master则是远程分支名。

这时候只是相当于从远程库拷了代码到本地,还没有和本地的merge,这就是为什么不直接pull,因为先fetchmerge我们就可以先看一下拉取下来的东西,再决定是否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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优小U

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值