我不小心使用mv重命名git下的文件。我改名了 从小写到大写的文件保持名称相同。
mv abc.java ABC.java
之后我也做了更改并提交了文件。
我现在如何对此文件进行实际的git重命名? Git bash似乎不理解ABC.java和abc.java之间的区别。
我不确定master(由其他人)发生了什么变化,但在转移到分支后,我无法将更改提交到文件中。它说旧的文件索引仍然存在。
$ git commit -m“重命名为大写”ABC.java 致命:不会添加文件别名 'dir1 / ABC.java'('dir1 / abc.java'已存在于索引中)
当我执行git状态时,它会显示重命名的文件,但不允许我提交重命名的文件。如果我尝试删除abc.java(实际上至少在本地不存在),再次(我认为由于不区分大小写)git会删除新的。
如果我克隆了一个新的repo,那么repo仍然会删除带有旧名称(abc.java)的文件,但是我的所有更改都会被删除,直到最近出现错误的文件为止。
答案 0 :(得分:5)
一个简单的git commit -m" message"没有任何文件路径参数为我做了伎俩。它更新了我认为的索引或至少它能够识别abc是要更新到ABC ..谢谢大家...
答案 1 :(得分:1)
你可以这样做:
$ git mv {abc,ABC}.java
答案 2 :(得分:0)
如果您想知道对abc.java进行了哪些更改,可以使用:
git log --follow abc.java
在结果中,您可以找到重命名的提交。
要将文件恢复为原始名称,您可以将git reset
与--soft
标记一起使用,这将取消您的更改,而不会丢弃它们,使您能够进行更正并再次提交
我建议你在git reset之前阅读以下链接,以便在尝试做一些危险的事情之前掌握它。
答案 3 :(得分:0)
在不区分大小写的文件系统上将foldername重命名为folderName
使用普通的mv命令(不是git mv)进行简单重命名不会被git识别为文件更改。如果您使用'git mv'命令尝试它,如下面一行
git mv foldername folderName
如果您使用不区分大小写的文件系统,例如你在Mac上并且没有将它配置为区分大小写,你会遇到类似这样的错误消息:
致命:重命名'foldername'失败:参数无效
以下是您可以做的工作: -
git mv foldername tempname && git mv tempname folderName
这会通过首先将文件夹重命名为完全不同的foldername来拆分重命名过程。将其重命名为不同的foldername后,该文件夹最终可以重命名为新的folderName。在那些'git mv'之后,再次,不要忘记添加和提交更改。虽然这可能不是一种漂亮的技术,但它的工作原理非常好。文件系统仍然无法识别字母大小写的变化,但git会将其重命名为新的foldername,这就是我们想要的全部内容:)
答案 4 :(得分:0)
如果您需要提交文件重命名(仅大写),并且可以选择进行暂存/提交