我有一个主人和开发者分支的git存储库
说我的分支叫branch1
在我的回购中,我有一个名为myfolder
的文件夹。我在branch1
,我做了
git checkout master
git checkout branch1
myfolder
现在是空的(原文如此),这是怎么发生的?
我应该注意myfolder
包含在.gitignore
中,我怀疑这是问题的原因,但我不明白为什么。还有办法恢复其内容吗?
答案 0 :(得分:0)
根据您对情况和观察的解释,我推断出以下内容:
master
分支上,文件夹myfolder
是存储库的一部分。branch1
分支上,该文件夹不是存储库的一部分,并且使用.gitignore
规则将其从Git中排除。所以你从branch1
开始,文件夹存在但被Git忽略,所以Git不知道它的内容。现在,您切换到master
分支;该分支跟踪该文件夹的内容。切换到它时,Git会将(未跟踪的)本地文件的内容与master
分支中的内容进行比较。因为它没有遇到任何差异,所以检查分支时没有冲突,所以它工作正常。
您最终获得了master
分支以及跟踪的 myfolder
文件夹。现在,您切换回branch1
:myfolder
文件夹是您要转移的master
分支的一部分,但它在branch1
分支上不存在。所以Git会删除它。这就是你在branch1
没有该文件夹时的结果。
不幸的是,当Git检测到丢失未提交内容的可能性时,它似乎会覆盖内容而不进行检查。这可能是由于忽略规则。所以我担心,以前无法从未提交的状态恢复确切的内容。你只有master
上的任何内容。