【发布时间】:2011-10-01 11:52:37
【问题描述】:
在克服了学习 Git 的几个障碍后,我遇到了一个新挑战:重命名目录(在本地,在工作目录中)。
当我输入git status 时,它会将旧目录名称中的所有文件(在新目录中存在的文件名完全相同)列为已删除,而新目录名称则列为“未跟踪” ”。
有没有办法告诉 Git “它实际上是同一个目录,只是名称不同”?
所以所有文件都将被git status 列为仅修改?
为了举例说明这个问题,这是我在重命名整个目录时从git status 收到的输出:
git status
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: old-dir-name/file1
# deleted: old-dir-name/file2
# deleted: old-dir-name/file3
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# new-dir-name/
no changes added to commit (use "git add" and/or "git commit -a")
~/sb/ws>
【问题讨论】:
-
我刚刚测试了这个,我没有那个问题。在我的盒子上,Git 成功识别出我重命名了一个文件夹并继续跟踪它的所有文件,而不会在
git status上报告任何内容。 -
@karlphillip 你是如何重命名文件夹的?就我而言,我完全删除了它并从不同的来源复制了相同的内容但名称不同。这有什么不同吗?
-
可能。我只是用 mv 重命名了它:
mv folder new_name。 Git 足够聪明,可以检测您是否创建了新文件或只是重命名了文件夹。但是当您删除目录并创建一个新目录时(即使它具有与前一个目录相同的文件),git 认为所有这些文件都是新的。以后只需将其重命名为mv。如果您喜欢,我可以将其添加为答案。 -
使用 Git 2.18(2018 年第二季度),
git status现在应该向您显示重命名(而不是删除/添加文件)。见my answer below
标签: git