git double checkout,文件夹内容不见了

时间:2016-11-11 18:35:08

标签: git gitignore git-checkout

我有一个主人和开发者分支的git存储库 说我的分支叫branch1 在我的回购中,我有一个名为myfolder的文件夹。我在branch1,我做了

git checkout master
git checkout branch1

myfolder现在是空的(原文如此),这是怎么发生的?

我应该注意myfolder包含在.gitignore中,我怀疑这是问题的原因,但我不明白为什么。还有办法恢复其内容吗?

1 个答案:

答案 0 :(得分:0)

根据您对情况和观察的解释,我推断出以下内容:

  1. master分支上,文件夹myfolder是存储库的一部分。
  2. branch1分支上,该文件夹不是存储库的一部分,并且使用.gitignore规则将其从Git中排除。
  3. 所以你从branch1开始,文件夹存在但被Git忽略,所以Git不知道它的内容。现在,您切换到master分支;该分支跟踪该文件夹的内容。切换到它时,Git会将(未跟踪的)本地文件的内容与master分支中的内容进行比较。因为它没有遇到任何差异,所以检查分支时没有冲突,所以它工作正常。

    您最终获得了master分支以及跟踪的 myfolder文件夹。现在,您切换回branch1myfolder文件夹是您要转移的master分支的一部分,但它在branch1分支上不存在。所以Git会删除它。这就是你在branch1没有该文件夹时的结果。

    不幸的是,当Git检测到丢失未提交内容的可能性时,它似乎会覆盖内容而不进行检查。这可能是由于忽略规则。所以我担心,以前无法从未提交的状态恢复确切的内容。你只有master上的任何内容。