Git的'远程添加'& '获取'流程澄清

时间:2012-06-10 14:12:21

标签: git github fetch

此示例位于github网站上的octocat example之后的“第3步:配置遥控器”中:

git remote add upstream git://github.com/octocat/Spoon-Knife.git
git fetch upstream

据我所知,在执行这些命令之后,github用户octocat自克隆回购以来所做的更改现在已在我的项目本地存储中实现。 但是假设在执行上述命令后,用户octocat再次在项目中进行更改。

Q1:现在所有更改都会自动更新到我的本地文件夹吗? (我怀疑没有)

如果Q1的答案是否定的:

Q2.1:为了让我再次更新新的更改,我是否只需要再次执行单个命令git fetch upstream来更新新的更改?

Q2.2:我是否可以仅记录最新提取中所做的更改?

1 个答案:

答案 0 :(得分:4)

Q1:不会.Git不会对遥控器进行轮询。你必须命令git用git fetch(或拉)来拉下变化。

但是,如果您的分支正在跟踪远程分支(可能是),那么当您发出git status时,git会告诉您分支是在远程分支的前面还是后面。如果你领先,那么你已经提交了提交,而遥控器上没有任何变化。如果你落后了,那么新的提交已被添加到遥控器。

Q2:是的。但请注意,git fetch仅会将更改拉下来。它不会将它们合并到您当前的分支中。因此,在您实际合并它们之前,您将不会“看到”更改。他们住在一个单独的分支 - 在这种情况下,上游/主人(假设主人是有问题的分支)。

当您检查了更改并准备将它们合并到本地分支时,您可以这样做:

git merge upstream/master

Q2.2:是的。这就是为git fetch做有用的原因。它可以很容易地看到更改的内容,而不是git pull,它在一次操作中进行获取和合并。虽然你仍然可以获得这种情况下的变化列表,但这有点困难。

在您执行git抓取的情况下,要查看所做的更改,请执行git diff upstream/master