2

这是我的情况:
假设我在分支 b1 工作。我写了一个文件 dir/f1.
然后我想把 dir/f1 的代码集成到 dir/f2 中,我不再需要 f1。
出于随机原因,我想保留 f1。
我从版本控制中删除了它,但它仍然在这里,未被跟踪。
如果我切换到分支 b2,f1 会出现编译错误,因为它没有与 b2 保持同步。
所以,我决定在切换之前在 b1 中 git stash -u,这样当我完成 b2 的工作时,我可以恢复我的上下文。
它几乎可以按预期工作:清理工作目录,隐藏所有内容(跟踪和未跟踪的文件,但由于我没有使用 -a 而不是忽略的文件),我可以 git stash 将它们应用回来。
唯一的问题是某些文件已从工作目录中删除,而其他文件则没有。消息是:

Not removing dir/f1

所以我的问题是:这种行为的原因是什么?git 如何决定在存储期间删除哪些文件,哪些不删除?

谢谢

4

1 回答 1

1

这种行为似乎只有在目录git 1.7.7.x和何时dir/f1才是可能的。

git stash -u用于git clean从工作目录中删除文件。根据git 的源代码,唯一git clean可以响应Not removing dir/f1消息的情况是何时dir/f1是目录。你确定dir/f1是文件?

git 1.7.8(具体来说,使用这个 commit)开始,git stash -u-d选项传递给git clean,这样就不会再出现这样的问题了。

于 2012-08-10T13:34:20.580 回答