无法提交文件,意外地使用mv

时间:2016-03-04 07:12:42

标签: git github git-branch git-reset git-mv

我不小心使用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)的文件,但是我的所有更改都会被删除,直到最近出现错误的文件为止。

5 个答案:

答案 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之前阅读以下链接,以便在尝试做一些危险的事情之前掌握它。

Git reset tutorial by Atlassian

Git reset Demystified

答案 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)

如果您需要提交文件重命名(仅大写),并且可以选择进行暂存/提交

  1. 更改大小写并在末尾(或其他符号)添加“ 1”
  2. 阶段(不提交)=结果“ R”-重命名该文件
  3. 从末尾删除“ 1”
  4. 阶段(不提交)=结果“ R”-重命名该文件(仅大写)
  5. 提交。