为了账号安全,请及时绑定邮箱和手机立即绑定

git mv并且仅更改目录的大小写

git mv并且仅更改目录的大小写

Git
元芳怎么了 2020-02-04 15:17:39
虽然我发现了类似的问题,但没有找到解决问题的答案当我尝试通过该目录从FOO重命名为foo git mv FOO foo我得到fatal: renaming 'FOO' failed: Invalid argument好。所以我尝试git mv FOO foo2 && git mv foo2 foo但是,当我尝试提交通过git commit .我得到# On branch master# Untracked files:#   (use "git add <file>..." to include in what will be committed)## foonothing added to commit but untracked files present (use "git add" to track)当我通过git add foo任何方式添加目录时,都不会更改,并git commit .再次给我相同的消息。我究竟做错了什么?我以为我使用的是区分大小写的系统(OSX),为什么我不能简单地重命名目录?
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

您处于不区分大小写的环境中。此外,如Git所理解-A的mv那样,添加no 将不会照顾到remove的一面。警告!执行此操作时,请确保没有其他更改或未跟踪的文件,否则它们将作为更改的一部分得到落实! git stash -u首先,执行此操作,然后再执行git stash pop。继续:要解决此问题,请执行以下操作:


mv foo foo2

git add -A

git commit -m "renaming"

mv foo2 FOO

git add -A

git commit --amend -m "renamed foo to FOO"

这是更改工作目录,提交然后折叠2个提交的引出方式。您可以只在索引中移动文件,但是对于git的新手来说,它对发生的事情可能不够明确。较短的版本是


git mv foo foo2

git mv foo2 FOO

git commit -m "changed case of dir"

如其中一项注释中所建议,您还可以进行交互式重新编排(git rebase -i HEAD~5如果在5次提交之前引入了错误的案例)来修复该案例,而不会在历史记录中的任何位置出现错误的案例。如果要执行此操作,则必须小心,因为从那时起的提交哈希值将有所不同,其他人将不得不根据分支的最近历史重新建立或重新合并其工作。


查看完整回答
反对 回复 2020-02-04
?
桃花长相依

TA贡献1860条经验 获得超8个赞

您要将选项设置core.ignorecase为false,这将使Git注意本机不支持它的文件系统的大小写。要在您的仓库中启用:


$ git config core.ignorecase false

然后,您可以使用来重命名该文件,git mv它将按预期工作。


查看完整回答
反对 回复 2020-02-04
?
BIG阳

TA贡献1859条经验 获得超6个赞

我能够通过使用临时文件名使用git 1.7.7解决此问题:


$ git mv improper_Case improve_case2

$ git mv improve_case2 improve_case

$ git commit -m "<your message>"


查看完整回答
反对 回复 2020-02-04
  • 3 回答
  • 0 关注
  • 647 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信