我在Git中创建了两个分支:
git branch F1
git branch F2
接下来,我切换到F1:
git checkout F1
我重命名我的UnitTests
目录到Tests
:
git mv .\UnitTests .\Tests
git commit . -m "Moving unit tests to Tests directory"
此时,我有一个带有master
目录的UnitTests
分支,一个带有UnitTests
目录的F2分支和一个F1
分支Tests
} 目录。所以,我切换到F2
:
git checkout F2
当我这样做时,我现在看到添加了UnitTests
目录,但我也看到Tests
目录(来自F1分支)仍在那里。它甚至都有相同的文件。
我可以强制通过运行
删除它git clean -fd
但是,我想知道为什么老分支的残余物挥之不去。我已经查看了其他一些可能的重复项,但是所有这些重复都记录了我的 move 尚未提交的情况。在转换分支之前,我明确承诺转向F1。
有什么想法吗?我在Windows上运行git version 1.9.2.msysgit.0
。
答案 0 :(得分:2)
这是因为您在UnitTests
目录中有git ignore(隐藏或显式忽略)的文件或目录(可能为空)
因此,git不会删除这些文件,因此他将它们保存在目录中。
答案 1 :(得分:1)
尝试使用内置一个文件的新目录。
我猜你在测试目录中可能有一些隐藏或被忽略的文件(或子目录)。
Git不关心目录 - 只关心其中的内容,因此重命名目录与“重命名”内部文件几乎相同。
这就是为什么你不能git add
在空目录上 - 并且它没有显示在git status
中。
检查的一个好方法是:git clean -ndx
(显示被忽略的文件和空目录)。
答案 2 :(得分:1)
我相信其他答案主要是正确,但不完全正确。想我会添加我自己的答案,以防它帮助任何其他Git新手。
首先,我检查了忽略规则和隐藏文件,但都没有出现。
切换到Tests
时,F2
中遗留下来的是空目录。他们不会被忽视或隐藏或任何东西,他们只是因为空洞而从未登记过。似乎checkout
命令将删除所有版本化文件,但保留空目录。 clean
命令将清除它们。
看起来Git正在按预期工作。谢谢!