【问题标题】:git not detecting directory moved into another directorygit没有检测到目录移动到另一个目录
【发布时间】:2017-11-23 16:06:24
【问题描述】:

给定一个文件foo/example.txt,当它被移动到新创建的父目录(即foo/bar/example.txt)时,git 似乎没有通过移动目录来检测新文件。

mkdir foo/bar
mv foo foo/bar

特别是,git status 显示 foo/example.txt 已删除,但未显示 foo/bar/example.txt 已创建。 git status --ignored 会将foo/bar 显示为被忽略的目录,即使它在.gitignore不是。事实上,即使重命名目录也不会改变其被忽略的状态。

不会在使用git mv 时发生。我不明白为什么。

这是Darwin C02RW05YFVH6 15.6.0上的git版本2.13.0

【问题讨论】:

    标签: git ignore mv


    【解决方案1】:

    当您git rm 旧目录和git add 新目录时,它会检测它。

    【讨论】:

    • 为什么?是否有设置让 Git 无需额外步骤即可始终检测到此类更改?
    • 问题是你“移动”了 git 背后的目录。如果在移动目录之后(不使用 git)你检查了状态 git 会告诉你“这个目录丢失了......并且还有另一个我不知道的目录也在那里”。这应该足以让你意识到 git 注意到了一些可疑的东西。如果此时你已经“添加”了目录,git 会认为文件是“新的”,因为你不会通知 git 删除。如果添加后你删除了旧目录,那么 git 会说“啊哈!”.... 2bcont
    • ... 然后它会告诉您文件已被移动..... 而不是使用“mv; git add; git rm”,你可以让 git 为你做这个动作,你会得到相同的结果:git mv originaldir bar/newdir
    • > 还有另一个我不知道的目录也在那里 就是这样,Git 忽略 新目录。这是预期的行为吗?
    • 是的。它将显示为一个目录,其中包含“未跟踪”文件(git 将报告状态)。
    猜你喜欢
    • 2015-12-24
    • 1970-01-01
    • 2017-07-20
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多