我正在通过the book和git 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
origin
后git pull
不可用,则git pull
会收到错误消息。所以,在我看来,origin
重新查询可用git fetch
并使用它而不是下载远程存储库的更改。即origin
告诉我git pull
存储库已更改(如果已发生),但不会将这些更改下载到我的本地存储库中。要下载这些更改并在本地版本的存储库中实现,我将执行git fetch
。即当我启动'git status'时,width="100%"
是一种告知“起源”存储库更新的方法吗?我是对的吗?
答案 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;不适用)。
要将本地master
与origin/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
将包含下载的提交。