在git中切换分支时保留被忽略的文件

时间:2015-08-20 12:12:47

标签: git gitignore git-index

Eclipse拥有自己的文件.project.classpath.settings文件夹。在git中,我将它们放在.gitignore文件中,因为我不希望它们在远程存储库中被跟踪。我的问题是,当我切换分支,然后切换回来时,这些文件已被删除,因此eclipse无法识别项目,我必须再次导入它们才能生成它们。

有没有办法告诉git忽略这些文件,但是将它们保存在本地仓库或其他东西中,以便在切换分支时不会丢失它们,但是不会跟踪它们的更改并且它们不会被推送到遥远的吗?

运行git ls-files -o时会显示文件。

我已检查GIT: How to keep ignored files when switching branches?,但在执行git status时文件仍会显示。

编辑:

git status就表明了这一点:

$ git status
On branch refactorizacion
Your branch is up-to-date with 'origin/refactorizacion'.

nothing to commit, working directory clean

这不起作用:

$ git add -f .project
$ git rm --cached .project

我也试过这个,但文件出现在git status之后:

$ git add -f .project
$ git update-index --assume-unchanged .project
$ git status
On branch refactorizacion
Your branch is up-to-date with 'origin/refactorizacion'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   .project

1 个答案:

答案 0 :(得分:0)

第二个显然不起作用。您正在向索引添加文件,但没有提交,它不知道要比较哪个以前的版本。所以git status会将它显示为一个新文件。您只能在提交一次后应用update-index。

在第一种情况下,我不确定为什么要在删除之前添加文件。

正如您提到的问题所述,您应该只删除该文件(如果git仍在跟踪它)并将其添加到.gitignore,以便git不再跟踪它。这将使其与分支机构切换绝缘。

编辑: 确保使用git rm <file>删除了该文件,并且所有分支中都存在添加该文件的提交。然后将文件添加到gitignore。