2

我不小心使用 mv 重命名了 git 下的文件。我将文件从小写重命名为大写,保持名称不变。

mv abc.java ABC.java

之后我也进行了更改并提交了文件。

我现在如何对该文件进行实际的 git 重命名?Git bash 似乎不理解 ABC.java 和 abc.java 之间的区别。

我不确定master(其他人)发生了什么变化,但在移动到分支后,我无法再将更改提交到文件。它说旧的文件索引仍然存在。

$ git commit -m "renamed to uppercase" ABC.java 致命:不会添加文件别名'dir1/ABC.java'('dir1/abc.java'已经存在于索引中)

当我执行 git status 时,它会显示重命名的文件,但不允许我提交重命名的文件。如果我尝试删除 abc.java(实际上至少在本地不存在),再次(我认为是因为不区分大小写)git 会删除新的。

如果我从中克隆一个新的 repo,repo 仍然会提取旧名称(abc.java)的文件,但我的所有更改都在其中,直到最近失败的那些都在其中。

4

5 回答 5

5

一个没有任何文件路径参数的简单 git commit -m "message" 对我有用。它更新了我认为的索引,或者至少它最终能够识别 abc 将更新为 ABC .. 谢谢大家..

于 2016-03-04T16:39:30.183 回答
0

如果您想知道在哪个提交中对 abc.java 进行了更改,可以使用:

git log --follow abc.java

在结果中,您可以找到重命名它的提交。

要将文件恢复为其原始名称,您可以使用git reset标志--soft,这将取消暂存您的更改,而不会丢弃它们,使您能够进行更正并再次提交它们。

我建议你在尝试做一些危险的事情之前阅读以下关于 git reset 的链接,以便很好地掌握它。

Atlassian 的 Git 重置教程

Git重置揭秘

于 2016-03-04T09:32:18.193 回答
0

你可以做:

$ git mv {abc,ABC}.java
于 2016-03-04T07:35:54.003 回答
0

如果您需要提交文件重命名,只需大写,并且您在暂存/提交时遇到问题,作为选项

  1. 更改大小写并在末尾添加“1”(或其他符号)
  2. 阶段(无提交)= 结果“R” - 重命名该文件
  3. 从末尾删除“1”
  4. 阶段(无提交)= 结果“R” - 重命名该文件(现在只有大写)
  5. 承诺。
于 2020-01-02T09:19:31.907 回答
0

在不区分大小写的文件系统上将文件夹名称重命名为文件夹名称

使用普通 mv 命令(不是 git mv)进行简单重命名不会被识别为来自 git 的文件更改。如果您尝试使用 'git mv' 命令,如下行所示

git mv foldername folderName

如果您使用的是不区分大小写的文件系统,例如您在 Mac 上并且没有将其配置为区分大小写,您将遇到如下错误消息:

致命:重命名“文件夹名”失败:参数无效

为了使它发挥作用,您可以采取以下措施:-

git mv foldername tempname && git mv tempname folderName

这通过首先将文件夹重命名为完全不同的文件夹名称来拆分重命名过程。将其重命名为不同的文件夹名称后,该文件夹最终可以重命名为新的文件夹名称。在那些 'git mv' 之后,不要忘记添加并提交更改。虽然这可能不是一个漂亮的技术,但它工作得非常好。文件系统仍然无法识别字母大小写的变化,但是由于将其重命名为新的文件夹名称,git 确实如此,这就是我们想要的 :)

于 2016-03-04T14:55:41.083 回答