繁体   English   中英

git pull 真的和 git fetch+merge 一样吗?

[英]Is git pull really same as git fetch+merge?

我在这里和 web 上看到了很多问题,这些问题说 git 拉取与执行 git 获取然后合并是一样的。 前几天我正在使用 git pull 在工作中拉一些东西,它一直对我说我的本地分支已经是最新的,尽管其他开发人员进行了更改。 但是,当我执行 git 提取然后执行 git 提取时,我能够提取更改。 如果 git pull 已经执行了 git 提取,为什么只是执行 git pull 不起作用? 我将不胜感激。

简短的答案是“是”,但长答案大多只是“是”。

如果您的 Git 版本早于 2.6,则您的git pull很简单——好吧,也许不是那么简单,超过 300 ——Z2591C98B70119FE624898B1E424B

git fetch $verbosity $progress $dry_run $recurse_submodules --update-head-ok "$@" || exit 1

这里的$@包含大多数 arguments 人们通常输入git pull

git pull origin master

例如会运行:

git fetch origin master

(如果合适,从$@中删除了一些选项以传递给 rebase 或 merge 命令。)

Since Git version 2.6.0, git pull is now coded in C, but it still invokes the same git fetch operation—it's just faster on Windows as it no longer has to get a shell involved.

答案大多只有“是”的部分是,获取之后, git pull的剩余部分不一定是git merge 它可以是git rebase ,甚至在少数情况下, git read-tree 详见脚本rest。

请注意,如果您有多个遥控器,并且在没有额外的 arguments 的情况下运行git fetch ,则 Git 将使用当前分支配置的遥控器,如果没有,则使用origin 当您运行git pull remote branch-name时,您将提供一个命名远程,它将覆盖当前分支的配置远程(如果有)。 所以这可能是差异的来源:如果当前分支没有上游集, git fetch将从origin获取,但git pull otherremote foo将从远程otherremote获取。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM