首页 > 解决方案 > 当我从有新文件的本地分支执行 git fetch 和 git checkout origin/branch 时,实际上会发生什么?

问题描述

考虑我有一个本地分支A和两个远程分支AB. 本地分支包含一些不在远程
的文件。 然后,我执行以下操作:A B


git fetch
git checkout origin/B

然后,来自本地 A 的那些文件仍然存在,我删除了这些文件并提交了我对一些文件中所需的更改origin/B

git add .
git commit -m "fixes made"

然后,head 与显示提交哈希分离

所以,我在这里有两个问题

  1. 为什么我本地分支中的那些文件A复制/保留到/in origin/B

  2. 头怎么掉了?

标签: gitgithubgit-fetch

解决方案


为什么我的本地分支 A 中的那些文件复制/保留到/在 origin/B 中?

因为它们不是来自分支 A 的文件。它们是您工作目录中不受 git 管理的文件。您没有将它们添加到分支 A 或其他任何地方的任何提交中。并且 git 不会对没有被告知管理的文件做任何事情。在您提交之前,工作不会“在分支上”。

头怎么掉了?

因为你做到了git checkout origin/B,这使人HEAD分离。您可能的意思是git checkout -t origin/B,它创建了一个新分支B,其上游origin/B和指向HEAD那里。


推荐阅读