在 Git 中取消跟踪已跟踪的文件 - 但仅在特定分支中?

15

最初,我将所有内容都放在主分支中。

后来,我决定将其拆分为Mac和Windows分支,并使主分支仅跟踪源代码文件。因此,当在主分支中时,我只会分阶段地更改源代码文件,并根据需要将这些源代码更改与Mac和Windows分支合并。

问题是,当我最初将所有内容跟踪在主分支中时,也将项目文件跟踪在内。因此,我会向项目添加新文件,并使其在Mac和Windows上编译,但是在切换回主分支时,项目文件也会切换回旧版本,导致编译失败。

那么,现在我该如何停止在主分支中跟踪我的项目文件呢?我不想停止在Mac或Windows分支中跟踪它,也不想将其从早期版本的主分支中删除。

1个回答

30
git rm --cached projectFile

将删除索引中的文件,因此它将不再被跟踪,但不会物理上删除它。


啊哈,谢谢!这会只取消跟踪当前分支还是所有分支? - wrongusername
啊哈,有趣。不幸的是,每当我切换到主分支时,项目文件也被删除了。我能让它只更改它正在跟踪的文件吗? - wrongusername
嗯,我不确定这是否可能,因为切换分支总是首先删除旧分支中跟踪的所有文件,并用新分支中的文件替换它。因此,如果该文件在您的分支中没有被跟踪,那么该文件将只停留在那里,这不是您想要的。也许您可以给master的项目文件(或者更好的是,特定于平台的文件)命名为不同的文件名? - poke
出于好奇 - 如果在主分支中执行了 git rm --cached projectFile 然后 echo projectFile >> .gitignore 再执行 git commit -am“stopped tracking on master”,那么这样做不是会达到他想要的效果吗?或者合并主分支到Windows/Mac会从这些分支中删除 projectFile 吗?他总可以挑选提交记录以避免这种情况,但是。。。 - Mr_and_Mrs_D
是的,如果文件没有被任何分支跟踪,那么它不会被删除,但可以在本地保留。 - poke
显示剩余2条评论

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