切换分支时Git不删除文件
Posted
技术标签:
【中文标题】切换分支时Git不删除文件【英文标题】:Git not removing files when switching branch 【发布时间】:2010-10-07 20:59:57 【问题描述】:有时在使用 Git 切换分支时(版本 1.7.2.1)
它似乎没有删除我创建的特定于我切换离开的分支的文件/目录。
在运行 git status
或这些文件的任何日志条目时,它也不会将其列为未跟踪。
这只是偶尔发生,我不确定为什么或如何重置它,以便删除不属于当前分支的文件。 如果我手动删除文件,它会再次同步(如切换分支时被删除/恢复)。
有人经历过吗?
【问题讨论】:
这发生在我身上是因为使用vagrant-fsnotify
将文件系统事件转发到虚拟机。它在内部调用 VM 中的touch
来触发增量构建等。
【参考方案1】:
我也见过这个。我通常只做一个git reset --hard
,然后是一个git clean -f -d
,它通常可以解决问题。
当我的 IDE 锁定了我要切换的分支中的一个文件时,这似乎肯定是最常发生的。
【讨论】:
git clean
部分是我正在寻找的,谢谢!我还应该补充一点,一些文件可能已经在 TextMate 中打开以进行编辑
请小心,因为这会删除您可能拥有的任何未跟踪的文件和文件夹......
是的,小心git clean -f -d
。它也会删除您忽略的任何内容。
@dgig 我猜是git clean -x
也会删除被忽略的文件。
MacOS 上的 Visual Studio Code 也发生了同样的事情:(i) 我切换出的分支中的陈旧文件未在当前分支中跟踪,(ii) git status
返回“工作树清洁”。很奇怪。【参考方案2】:
第一:
git reset --hard
将存储库重置为上次提交的状态。 由于 git 通常不会删除文件,因此它不会跟踪那些仍然可能导致问题的文件。
然后:
git clean -d --dry-run
查看哪些文件会被删除。 我们不想失去有价值的工作。 如果可以的话:
git clean -d
【讨论】:
@baloo 是的,但它仍然非常有用(= SE 可能在其网站上存在不一致的模式和政策问题,但它绝对是一个值得深奥的问答档案。【参考方案3】:我遇到了同样的问题,因为我在切换分支之前没有提交文件!
更多解释在这里:Why git keeps showing my changes when I switch branches (modified,added, deleted files) no matter if I run git add or not?
【讨论】:
这对我有帮助,但我不确定在简单地链接到某人的答案时是否有任何支持...... 即使提交了所有文件,我也遇到了同样的 OP 问题以上是关于切换分支时Git不删除文件的主要内容,如果未能解决你的问题,请参考以下文章