只是git fetch通知吗?

时间:2015-07-08 08:19:08

标签: git

我正在通过the bookgit help命令学习Git。

我更改了origin的内容并提交了它。然后我在该存储库的“本地副本”中启动了git fetch origin命令。

$ git fetch origin
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.
From D:/_git.sandbox/./my_remote_project
   a03e9df..837c57d  master     -> origin/master

这个信息对我来说不明确......来自书:

  

如您所见,要从远程项目获取数据,您可以运行:
  $ git fetch [remote-name]
该命令发送到该遥控器   项目并从您远程项目中下载所有数据   还没有。执行此操作后,您应该引用所有内容   来自该遥控器的分支,您可以合并或检查   任何时候。

如果我git fetch origin origingit pull不可用,则git pull会收到错误消息。所以,在我看来,origin重新查询可用git fetch并使用它而不是下载远程存储库的更改。即origin告诉我git pull存储库已更改(如果已发生),但不会将这些更改下载到我的本地存储库中。要下载这些更改并在本地版本的存储库中实现,我将执行git fetch。即当我启动'git status'时,width="100%" 是一种告知“起源”存储库更新的方法吗?我是对的吗?

5 个答案:

答案 0 :(得分:3)

没有

git fetch下载您未在本地存储的远程存储库更改。但它并不适用于您当地的分支机构。

git pull是一个git fetch后面跟着你设置为合并的git merge分支。

答案 1 :(得分:2)

  

即。 git fetch告诉我原始存储库已更改(如果已发生),但不会将这些更改下载到我的本地存储库中。

它说它“拉下来自该远程项目的所有数据还没有”,因此包括下载更改。

  

要下载这些更改并在本地版本的存储库中实现,我将执行git pull

git pull不仅仅是git fetch后跟git merge,因此虽然它也会“实施更改”,但这样做会使早期的提取过时。

  

即。当我启动'git status'时,'git fetch'是一种告知'origin'存储库更新的方法?我是对的吗?

不是真的。要证明git fetch已经下载了所有内容,您只需断开网络连接,然后执行以下命令:

git checkout master # optional
git merge origin/master

这将应用更改而无需再次联系遥控器。

答案 2 :(得分:1)

或多或少。

fetch之后,您已经下载了远程对象,在这种情况下origin(提交和引用,如果您需要)但不会更改本地存储库(它们和#39;不适用)。 要将本地masterorigin/master同步,您需要merge$ git merge origin/master

pull只是fetch后跟当前分支上的merge。因此,您通常只需要$ git pull

请注意,如果有多个分支,只有当前分支将在拉取后合并(但fetch适用于整个远程分支。)

答案 3 :(得分:1)

git fetch仅更新代表遥控器的分支(例如origin/master)。如果您想在本地分支机构中获取更改(例如master),则需要git merge。或者,您可以使用同时执行这两项操作的git pull命令。

答案 4 :(得分:0)

git fetch 下载更改,但不会将其应用于您的本地分支机构。试试这个:

git fetch
git log origin/master

将包含下载的提交。