【问题标题】:Keep ignored files when switching branches in git在 git 中切换分支时保留忽略的文件
【发布时间】:2015-08-20 12:12:47
【问题描述】:

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

有没有办法告诉 git 忽略这些文件,但将它们保存在本地 repo 或其他东西中,这样我在切换分支时不会丢失它们,但不会跟踪对它们的更改,也不会将它们推送到远程吗?

运行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

【问题讨论】:

  • 你能显示你的 git status 的输出吗?
  • @TheGeorgeous 我用更多信息编辑了这个问题
  • @carcaret 您找到问题的解决方案了吗?我也有同样的问题,找不到解决办法。

标签: git gitignore git-index


【解决方案1】:

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

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

正如您提到的问题中所述,您应该简单地删除文件(如果 git 仍在跟踪它)并将其添加到 .gitignore,以便 git 不再跟踪它。这将使其免受分支切换的影响。

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

【讨论】:

  • 该文件 not 被 git 跟踪,它 not 在远程,它在 @987654323 @。如果我git clone 存储库,文件.project 不存在,那么我在eclipse 中导入它并创建文件,但是当切换分支时,它又消失了。能不能不被删除,也不被git跟踪?
  • 创建文件并运行 git status 后,输出是什么??
  • 这是我写的第一段代码,一切都是最新的,没有什么可提交的。
  • 而且您以前从未将 .project 添加到您的 git 存储库中
  • 我有。一开始它是被添加的,然后我从仓库中删除了它,因为我不希望它在遥控器中。我不记得是我删除它的方式。
猜你喜欢
  • 1970-01-01
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 2016-04-04
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
相关资源
最近更新 更多