GIT:当检出另一个分支时,我想清除被忽略的文件

时间:2011-01-20 20:10:11

标签: git git-checkout

假设我在master中有一个结构。

d - src 
      - main ...
      - resources ...
  - target
      - xyz

不应跟踪文件xyz,因此我添加了.gitignore target / * 并提交结构

  • git commit -m'初始结构'

我创建了2个分支

  • git branch t1
  • git branch t2

并切换到t1

  • git checkout t1

我开始做一些工作,编译东西,以便填充目标。 我将更改提交到t1。

  • git commit -a' t1具体更改'

然后我切换到t2

  • git checkout t2

当我查看目标时,它仍然填充了创建的文件 当分支t1处于活动状态时,我希望将这些'清除掉'

我发现了一个类似的讨论,声明git的行为应该与我看到的不同。 Git is deleting an ignored file when i switch branches

我错过了什么?

弗朗西斯

3 个答案:

答案 0 :(得分:2)

这是设计的。 Git不会触及它在工作文件夹中没有跟踪的文件。如果要清除未跟踪的文件,可以使用

git clean -xdf

更常见的是,我想抛弃未跟踪但未被忽略的更改。这可能是因为我正在尝试一些代码并添加了一个新的类文件。在这种情况下,我会使用:

git clean -df

这将使我的输出目录保持原样。我会依靠我的开发工具来清理这些文件夹。

你可以使用钩子,但这不是一个好的解决方案,因为它更难在团队中分享。

答案 1 :(得分:0)

您可以添加post-checkout挂钩来清除忽略的文件:

git clean -f -X

答案 2 :(得分:0)

您链接的问题是谈论在一个分支中跟踪而在另一个分支中被忽略的文件。您谈论的是未在任何分支中跟踪的生成文件。由于git没有跟踪它们,因此它不会对它们做任何事情。