Git:将.gitignore与不同的分支一起使用

Git:将.gitignore与不同的分支一起使用,git,gitignore,git-branch,Git,Gitignore,Git Branch,我有一个非常基本的工作环境,但并没有按照预期使用Git 我们可以这样描述它:两个分支A和B的工作树中各有两个文件,第一个文件是toMerge,第二个文件是TOKESPECIC 我在两个分支中有相同的.gitignore,表示忽略toKeepSpecific文件。toKeepSpecific文件从未被推送,因此在远程存储库中,这两个分支只包含toMerge 我遇到的问题是,当我在分支B上尝试签出分支A时,我收到以下消息:“签出将覆盖以下未跟踪的工作树文件”。我以为.gitignore会处理的,但显

我有一个非常基本的工作环境,但并没有按照预期使用Git

我们可以这样描述它:两个分支A和B的工作树中各有两个文件,第一个文件是toMerge,第二个文件是TOKESPECIC

我在两个分支中有相同的.gitignore,表示忽略toKeepSpecific文件。toKeepSpecific文件从未被推送,因此在远程存储库中,这两个分支只包含toMerge

我遇到的问题是,当我在分支B上尝试签出分支A时,我收到以下消息:“签出将覆盖以下未跟踪的工作树文件”。我以为.gitignore会处理的,但显然不是

什么是最适合这种需求的git环境

谢谢

git ignore告诉git不要按特定名称跟踪文件内容

编辑这只会阻止git将文件显示为未跟踪,或在git add之后自动跟踪它们它不适用于当前跟踪的文件。首先,您需要从希望忽略它们的分支中手动删除它们

IOW:git ignore不影响现有修订。跟踪的文件将继续被跟踪,直到您删除它们


不管怎样,即使本地文件(当前)未被跟踪,也永远不能在没有警告的情况下覆盖它们。当然,这正是为了防止交换分支上的数据丢失

许多git命令接受
--force-
选项,不管怎样,只要知道自己在做什么,就使用它


如果您使用的git工作流不允许您使用
--force
选项,那么我建议您在执行分支切换之前,使用
git clean-x
命令来清理未跟踪(即被忽略的)文件

它抱怨的是哪个未跟踪文件?另外,.gitignore不应该管理git正在跟踪的文件。是特定的文件引起了投诉…我不想使用--force,因为我不想覆盖该文件,我想保留当前的本地版本…签出执行签出。无法在保持某些文件不变的情况下签出版本。您首先必须确保阻止文件不再位于您尝试签出的版本中。您可以尝试执行相反的操作:
git checkout revision--notignored1/notignored2/
,但这会改变语义:这不会将HEAD更新为checkout revision,而是覆盖指定的本地文件,同时保持在与以前相同的HEAD。为回答添加了说明谢谢!但问题是:阻止文件不在我试图签出的修订版中。我基本上只想签出所有文件,除了那些不仅被忽略,而且不在任何分支中的文件(仅在工作树中本地存在的文件)。但是我看到了相反的想法…我只是希望有一个更自然的解决方案…
“以下未跟踪的工作树文件将被签出覆盖”
与您的断言相矛盾,即这些文件不在您尝试签出的修订版本中。我个人会仔细检查一下(例如,
git ls tree-r“branchA:path/to/ignored.file”