【发布时间】:2013-04-14 13:45:50
【问题描述】:
我将一个目录从 tools 重命名为 Tools 并提交。在此之后,我的遥控器中有两个目录。所以由于某种原因 git 没有删除 tools 目录。如何防止这种情况或解决当前问题?
【问题讨论】:
-
git add --all包括删除和创建。
我将一个目录从 tools 重命名为 Tools 并提交。在此之后,我的遥控器中有两个目录。所以由于某种原因 git 没有删除 tools 目录。如何防止这种情况或解决当前问题?
【问题讨论】:
git add --all 包括删除和创建。
如果:
我建议你:
git reset --hard HEAD^(确保您没有任何正在进行的工作,或先将其隐藏)git mv tools Tools
git push --force
【讨论】:
您在没有通知 git 的情况下重命名了一个目录,因此 git 将您的 Tools 目录视为一个新目录并将其添加到版本控制中。
要解决此问题,您可以要求 git 删除名为 tools 的旧目录:
git rm -r tools
git commit
另一种选择是git add -u,它会检查工作目录的当前状态并更新暂存区以反映此状态。因此 git 会意识到任何在其背后被删除的目录。
# From the root of your repo
git add -u .
git commit
对于未来,使用git mv 执行重命名,而不是直接在Shell 或命令提示符下执行重命名。虽然 git 足够聪明,可以在发现删除和添加之间存在显着相似之处时跟踪移动,但我更喜欢明确地通知 git 移动操作。
git mv tools Tools
git commit
【讨论】:
git rm,因为我在 Windows 上没有这个目录(因此不区分大小写的文件系统)。 git add -u 什么都不做。 git mv 再次不起作用,因为我没有这个目录。