1

此示例在 github 网站上的octocat 示例之后的“步骤 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:我能否仅获取最新获取中所做更改的日志?

4

1 回答 1

4

Q1:不。Git 不会轮询遥控器的更改。您必须命令 git 来下拉更改git fetch(或拉)。

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

Q2:是的。但是,请注意,git fetch这只会将更改拉下来。它不会将它们合并到您当前的分支中。所以在你真正合并它们之前,你不会“看到”这些变化。他们生活在一个单独的分支中——在这种情况下,上游/主控(假设主控是有问题的分支)。

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

git merge upstream/master

Q2.2:是的。这就是为什么做git fetch是有用的。它可以很容易地查看更改是什么,而不是git pull在一个操作中执行获取和合并的位置。虽然您仍然可以获得在这种情况下的更改列表,但要稍微困难一些。

在您的情况下,您正在执行 git fetch,以查看所做的更改,请执行git diff upstream/master.

于 2012-06-10T14:45:09.543 回答