【发布时间】:2015-09-19 14:07:42
【问题描述】:
我正在通过阅读relevant section of the Pro Git Book 了解如何使用 Git 遥控器。
如果您克隆存储库,该命令会自动将该远程存储库添加到名称“origin”下。因此,git fetch origin 获取自您克隆(或上次从中获取)该服务器以来已推送到该服务器的任何新作品。
请务必注意,git fetch 命令仅将数据获取到您的本地存储库;它不会自动将其与您的任何工作合并或修改您当前正在处理的工作。准备好后,您必须手动将其合并到您的工作中。
这是我尝试过的。我克隆了一个存储库并编辑了一个文件。 在原始存储库中,有人更新了相同的文件并推送。 那么,
我跑了
git fetch。 它显示了一些更新进度消息。但是,git log没有显示该更新。我误解了git fetch的作用吗?我错过了什么吗?我跑了
git pull,我得到了
错误:您对“hello_world.c”的本地更改将被合并覆盖。中止。 请在合并之前提交您的更改或存储它们。
在这里,我相信它也在合并,为了避免意外的数据丢失,它中止了。
编辑: 感谢您的回答。实际上,在查看答案之前,我正在尝试自己并通过以下命令/输出实现了同样的效果:
$ git ls-remote origin
d0006a6bfa95e0e90aa820a0e50d31a548625652 HEAD
d0006a6bfa95e0e90aa820a0e50d31a548625652 refs/heads/master
$ git ls-remote .
14375458b8a6b84f82d9fa4d2ded0bb8c9e87431 HEAD
14375458b8a6b84f82d9fa4d2ded0bb8c9e87431 refs/heads/master
d0006a6bfa95e0e90aa820a0e50d31a548625652 refs/remotes/origin/HEAD
d0006a6bfa95e0e90aa820a0e50d31a548625652 refs/remotes/origin/master
还有以下命令:
$git log origin --oneline
$git log --oneline
感谢您接受我的愚蠢问题 ;-)
【问题讨论】:
-
[...] git fetch 命令将数据拉取到本地存储库 [...] 注意“拉取”一词;它在 Git 中具有非常特定的含义,并且以您的方式使用它只会导致混乱。