GIT:如何在切换分支时保留被忽略的文件?

10
我有一个App.Local.config文件,每个开发人员都有自己的设置。我不希望将此文件版本化到GIT存储库中,因为每次它都会被另一个开发人员的更改覆盖。
所以我从存储库中删除了该文件,并将其添加到忽略文件中。但是现在当开发人员切换分支时,App.Local.config将从他们的本地文件系统中删除。
最终我想要的是:
1. 新的开发人员克隆存储库,获取App.Local.config的起始版本。 2. 开发人员对App.Local.config进行更改。Git将忽略更改并不会提交。 3. 开发人员切换分支后,App.Local.config的更改不会丢失,文件也不会被删除。
我该怎么做?
谢谢。

如果文件被正确忽略,当切换分支时就不应该被触碰。在输入 git status 命令时它是否出现? - Mike Weller
2
它只会在每个人的第一次更新时被删除。一旦每个人的存储库都是最新的,该文件将保留不被删除。 - TheBuzzSaw
3个回答

9
您可能发生的情况是将文件从您的工作区删除,但未从索引中删除。如果您这样做,Git会认为删除此文件是一种更改,并从那时起删除它。
正确的方法是使用以下命令从索引中删除不再需要跟踪的文件。
git rm --cached App.Local.config

然后将该文件添加到.gitignore中即可。

这样做,您就不会再遇到有关该文件的问题了。


1
@mswanson 如果该文件被忽略,您可以随意切换分支 - 它不会被触及。因此,您只有一个问题:为开发人员提供此文件的模板。但是您应该在 Git 之外完成此操作。 - madhead
如果文件被忽略并且已经从索引中移除,那么对该文件所做的更改不会丢失,也不会被删除。 - iberbeu
1
@iberbeu 我也遇到了同样的问题,但是该文件从未在索引中。我使用 --orphan 标志启动了一个新分支,然后 git rm --cached 所有内容,在 .gitignore 中忽略了一些文件并提交了更改。当我切换分支时,这些文件会消失,我不知道如何避免这种情况! - splinter123
如果在分支更改后文件消失,那是因为它们在索引中。我建议你使用 git rm --cached 命令将它们删除,然后将其添加到 .gitignore 文件中。我猜想,当你提交时,这些文件也被一起提交了。如果情况不同,请提出另一个问题以便我们在那里讨论。 - iberbeu
@ splinter123 参见 Eki 的回答:[https://dev59.com/4m_Xa4cB1Zd3GeqP6_bI#48237321#48237321],简而言之,您应该从所有分支和其所有.gitignore文件中删除该文件,然后它将不会消失。 - Haritsinh Gohil

1
你不仅应该在工作分支中使用git rm --cached App.Local.config,还应该在要切换的分支中使用,否则,如果你只在那个分支中使用git rm --cached App.Local.config,当你切换回你的工作分支时,你将会失去App.Local.config。请注意保留HTML标签。

0

看起来这个文件曾经在索引中。因此它的删除一种变化。您可以将其添加到.gitignore.git/info/exclude,然后在每个开发者的机器上重新创建它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接