git忽略一个分支,但不忽略另一个分支

git忽略一个分支,但不忽略另一个分支,git,github,Git,Github,github上有一个不是我的存储库。我克隆了它,所以现在我在我的github帐户中有了它的副本,我的计算机上也有一份回购协议的副本。我创建了一个分支,它有自己的目录和大量文件,然后我将这些文件提交给该分支,称之为apple。当我切换回主分支时,我注意到在状态中,我在apple上提交的目录和其中的所有文件都显示在状态中。所以现在我有大约一百个文件,每次我切换到master时都是可见的 我的问题是,当我切换回主控时,我在apple分支中的那些文件将被忽略,我如何才能做到这一点?我确信我可以修改mas

github上有一个不是我的存储库。我克隆了它,所以现在我在我的github帐户中有了它的副本,我的计算机上也有一份回购协议的副本。我创建了一个分支,它有自己的目录和大量文件,然后我将这些文件提交给该分支,称之为apple。当我切换回主分支时,我注意到在状态中,我在apple上提交的目录和其中的所有文件都显示在状态中。所以现在我有大约一百个文件,每次我切换到master时都是可见的

我的问题是,当我切换回主控时,我在apple分支中的那些文件将被忽略,我如何才能做到这一点?我确信我可以修改master中的.gitignore,但这将改变项目的.gitignore

谢谢



编辑:评论者指出,如果文件是在另一个分支中提交的,那么在我切换分支时,它们不应该出现,这是正确的。在与所有在这里帮助过我的人一起工作之后,我发现我在apple分支上创建的目录中有一个子目录有自己的.gitignore,它忽略了很多文件。该.gitignore是在apple分支中提交的,当我切换分支(例如切换到主分支)时,特定于目录的.gitignore消失了,apple分支上最初被忽略的所有文件在git gui的任何其他分支中显示为未跟踪。所以我有很多文件,我以为是在苹果分支上提交的,但实际上不是。抱歉搞混了!我将标记Ryan Stewart的答案为正确。

您可以将自己的“全局忽略”文件设置为:

git config --global core.excludesfile ~/.gitignore_global
然后根据需要填充
~/.gitignore\u global
。此外,您还可以编辑

.git/info/exclude

就像
.gitignore
一样,但它只适用于.git存储库。

如果您确实添加了新文件并将其提交到苹果分支,然后切换回master,它的历史记录中不包含苹果,那么这些新文件将不会显示。你对这个问题的描述有些不合情理

也许您没有意识到,在git中,您必须在
git提交
文件之前
git添加
文件(除非您专门使用
git提交
)?具体来说,如果您在苹果分支上添加了目录香蕉,那么您可以执行以下操作:

git add banana
git commit -m "added the banana feature"
git checkout master

然后你就在主分支,那里就没有香蕉了。在苹果公司签出git后,banana将再次回来,因为它存在于该分支中。

google和stack可以完成引用链接修改.gitignore的工作,问题排除了这一点,因为“这将改变项目的.gitignore。”如果文件在另一个分支中提交,当你切换到一个不存在它们的分支时,它们不应该出现。我想我要寻找的是一种方法,可以忽略相关分支之外的任何分支中的目录。有没有办法做到这一点?苹果的东西不应该出现在主分支上。请参见上面Ryan Stewart的回答。完美,将文件添加到.git/info/exclude对我很有效。如果我切换回master,我在apple中提交的目录被列为未跟踪目录,那么该目录中至少有一些内容未提交。
git status-u
将向您显示所有未提交文件的完整列表,而不仅仅是未跟踪的顶级目录。我在windows上使用git gui,它会为您显示目录中的每个文件未老化的变化。当我使用master时,我很难找到我真正想要的更改。你最初说的是“未跟踪”。这与“未老化”不同。我仍然认为你只是没有提交分支中的文件。试着按照我上面的说明,看看结果。