1

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

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

文件 xyz 不应该被跟踪,所以我添加到 .gitignore target/* 并提交结构

  • git commit -m '初始结构'

我创建了 2 个分支

  • git 分支 t1
  • git 分支 t2

并切换到 t1

  • git结帐t1

我开始做一些工作,编译东西,这样目标就被填充了。我将更改提交给 t1。

  • git commit -a 't1 特定更改'

然后我切换到 t2

  • git结帐t2

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

我发现了一个类似的讨论,指出 git 的行为应该与我看到的不同。当我切换分支时,Git 正在删除一个被忽略的文件

我错过了什么?

弗朗西斯

4

3 回答 3

2

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

git clean -xdf

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

git clean -df

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

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

于 2011-01-20T20:53:10.740 回答
0

您可以添加一个post-checkout清除被忽略文件的钩子:

git clean -f -X
于 2011-01-20T20:27:50.127 回答
0

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

于 2011-01-20T20:28:32.963 回答