我想做 git fetch 而不是 git pull。但是当我进行 fetch 时,它从未提到过像“这个”文件需要合并或类似的东西。为什么会这样?。如果我不知道这些文件需要合并,那么 git fetch 解决什么目的
user1615186
问问题
203 次
2 回答
4
要扩展 anio 的正确答案,git fetch
请更新所谓的远程跟踪分支。您可以将远程跟踪分支视为远程服务器上的代理。例如,假设您在克隆存储库时,其中有三个提交:
+----------------------------------+
| Remote repository (origin): |
| master: A-B-C |
+----------------------------------+
+-------------------------------------------------------+
| Your repository: |
| remotes/origin/master: A-B-C (remote tracking branch) |
| master: A-B-C (your working branch) |
+-------------------------------------------------------+
现在假设有人做了一些工作并推动了一些工作,比如提交 D 和 E。现在图片看起来像这样:
+----------------------------------+
| Remote repository (origin): |
| master: A-B-C-D-E |
+----------------------------------+
+-------------------------------------------------------+
| Your repository: |
| remotes/origin/master: A-B-C (remote tracking branch) |
| master: A-B-C (your working branch) |
+-------------------------------------------------------+
请注意,您的存储库没有更改;对远程存储库的更改不会自动推送到您的存储库。但是,如果您这样做git fetch
,它只会更新您的远程跟踪分支:
+----------------------------------+
| Remote repository (origin): |
| master: A-B-C |
+----------------------------------+
+-----------------------------------------------------------+
| Your repository: |
| remotes/origin/master: A-B-C-D-E (remote tracking branch) |
| master: A-B-C (your working branch) |
+-----------------------------------------------------------+
请注意您的远程跟踪分支现在如何拥有来自远程存储库的所有最新信息,但您的工作分支尚未更新,因为这样做需要合并(在这种情况下是快进合并,因为您没有完成任何工作)。
仅此git fetch
而已;它只更新远程跟踪分支,它不会告诉您将合并什么。要查看将合并什么,请参阅链接 anio 提到(如何在 git 中预览合并?)。
于 2012-08-27T22:59:13.180 回答
1
git fetch 下载更改但不进行合并。git pull 就是这样做的。你想预览 git merge 会做什么吗?然后看到这个:如何在 git 中预览合并?
由于撤消失败的 git merge 非常容易,所以我个人只是进行 git merge 并查看我得到了什么冲突。大多数时候,合并进行得非常顺利。如果我遇到太多冲突或改变主意,很容易撤消 git 合并:
git reset --hard HEAD
Git 让尝试变得很容易。不要害怕。
于 2012-08-27T22:42:38.933 回答