切换分支后.gitignore和丢失.gitinored文件

时间:2013-02-21 05:44:31

标签: git version-control github git-branch missing-data

我是git的新手,很抱歉,如果这个问题已经得到解答了。我很难找到答案。

我想忽略一组之前从未提交过的文件,并使用github应用程序选择它们并忽略它们。我转到另一个分支一段时间,当我回到我的分支时,我忽略的文件消失了。

这些文件是否已删除?

我使用git checkout切换回分支然后git status --ignored。我丢失的文件不存在。

3 个答案:

答案 0 :(得分:4)

您可以使用git reflog --all从Github应用程序在切换到其他分支之前自动隐藏被忽略的文件时获取SHA代码。请参阅https://stackoverflow.com/a/8865242/2970321

例如,我使用应用程序(SHA /pr/364)获取了拉取请求(2ba129d)。在我切换回gh-pages之前,它隐藏了我忽略的文件(SHA 36edfc6)。

finding the SHA code of a dropped stash

所以要恢复,我需要做的就是:

git checkout 36edfc6

我的文件神奇地重新出现,我可以安全地在其他地方手动存储它们,然后再切换回gh-pages

答案 1 :(得分:1)

git不会删除它不关心的文件,除非明确告知这样做(在某些情况下由checkout -f签出,或clean) 。由于git对它们一无所知,它也无法对它们进行再次保护。在移动并做可能有害的事情之前使用git stash。仔细考虑哪些文件进入.gitignore,将所有非自动生成的文件添加到版本控制中。

答案 2 :(得分:0)

好像您忽略了分支var mystring = "+test +remove +character"; mystring = mystring.replace(/\+/g, ''); alert(mystring);中的文件,然后切换到分支A,但没有忽略那里的文件。

如果仅忽略分支B中的文件,而不忽略分支A中的文件,则当它们从B切换到B时,它们将被删除。但是,如果您从A切换到A,它们应该重新出现。

如果从任何分支机构B检出到X,这是正常的git行为,将删除不在分支机构Y中但在分支机构Y中的所有文件。如果在X中忽略了一个文件,但在Y中却没有忽略该文件,那么您将遇到这种情况。

为防止文件被删除,可以将它们添加到其他分支机构X的{​​{1}}文件中。