Git中pull对比fetch && merge
Git中pull对比fetch && merge
秋风醉了 发表于2年前
Git中pull对比fetch && merge
  • 发表于 2年前
  • 阅读 2351
  • 收藏 5
  • 点赞 3
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: Git中pull对比fetch && merge

Git中pull对比fetch && merge

使用git fetch和git pull都可以更新远程仓库的代码到本地,但是它们之间还是有区别。

git fetch

git fetch origin master
git log -p master..origin/master
git merge origin/master
  1. 从远程的origin仓库的master主分支更新最新的版本到origin/master分支上

  2. 比较本地的master分支和origin/master分支的差别

  3. 合并内容到本地master分支

 

git pull

相当于git fetch 和 git merge,即更新远程仓库的代码到本地仓库,然后将内容合并到当前分支。

所以,简单的说git pull相当于git fetch后再做一个git merge。那么它们具体的区别如何分析呢,这就需要我们再认识下git了,先看看下面这张图:

我们知道,git其实有好几个区,工作区(workspace)、暂存区(index)、本地仓库(local repository),当然还有远程仓库(remote repository)。远程仓库为我们保存一份代码拷贝,如github,而工作区、暂存区和本地仓库都在本地,这就是为什么没有网络我们也照样使用git提交(commit)代码更新,因为提交仅是提交到本地仓库,待有网络之后可以再推送(push)到远程仓库。

正如上图所示,git fetch是将远程仓库的更新获取到本地仓库,不影响其他区域。而git pull则是一次性将远程仓库的代码更新到工作区(同时也会更新本地仓库)。

通常来说,git fetch和merge与git pull的区别已经很明显了,但是如果想再了解下git是如何操作的,则需要我们了解下分支这个git的强大特性(分支的概念确实太牛逼了,我不确定我的理解是否是正确的)。

 

分支

分支(branches)是用来标记特定的代码提交,每一个分支通过SHA1sum值来标识,所以对分支进行的操作是轻量级的——你改变的仅仅是SHA1sum值。所以为什么git提倡大家多使用分支,因为它即轻量级又灵活。简单的说,分支有两种:

本地分支(local branches)” ,当你输入“git branch”时显示的:

$ git branch
  * master

远程分支(remote branches)” ,当你输入“git branch -r”是显示的:

$ git branch -r
  origin/master

如果你对分支在本地是如何存储感兴趣的话,看看项目中的下面文件,文件里面存的就是一个SHA1sum值:

.git/refs/head/[本地分支]

.git/refs/remotes/[正在跟踪的分支]

=======END=======

共有 人打赏支持
粉丝 214
博文 608
码字总数 433844
×
秋风醉了
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: