Java 如何使用Ortoisegit提交区分大小写的重命名文件?

Java 如何使用Ortoisegit提交区分大小写的重命名文件?,java,eclipse,git,file-rename,tortoisegit,Java,Eclipse,Git,File Rename,Tortoisegit,我正在尝试一个使用Eclipse重命名文件的示例项目。首先,我做了一个提交并推送到GitHub。该文件是Samplemain.java。如果我将该文件重命名为SampleMain.java,并且如果我尝试使用TortoiseGit提交重命名后的文件,我将无法提交。相反,它通过一个小对话框显示一个错误 请让我知道重命名Git中区分大小写的文件的解决方案。 我正在使用Windows,错误对话框如下所示。 两阶段重命名。。。将其命名为“z.tmp”,然后返回到您真正想要的名称 我知道使用Subvers

我正在尝试一个使用Eclipse重命名文件的示例项目。首先,我做了一个提交并推送到GitHub。该文件是
Samplemain.java
。如果我将该文件重命名为
SampleMain.java
,并且如果我尝试使用TortoiseGit提交重命名后的文件,我将无法提交。相反,它通过一个小对话框显示一个错误

请让我知道重命名Git中区分大小写的文件的解决方案。 我正在使用Windows,错误对话框如下所示。

两阶段重命名。。。将其命名为“z.tmp”,然后返回到您真正想要的名称

我知道使用Subversion时,我必须在两步重命名之间进行提交,但使用Mercurial时,我不这样做


不确定Git是否需要它。

这是Ortoisegit的问题,而不是Git本身的问题。如果您使用命令行提交,它将工作,我现在检查了它。请注意,重命名仍然需要2个
git mv
命令,但应该只需要一个
git commit


另一种选择是在GitHub上重命名文件:在GitHub上编辑文件时,请在顶部注意,您可以更改名称。然后,您可以从中拉出。

在Windows命令行(MINGW控制台)中运行以下命令。它应该解决病例检测问题

git config core.ignorecase false

显然,有一个实用程序专门用于此:

我还不能亲自尝试,因为作者没有提供最终的exe文件,而且我在尝试运行构建脚本时遇到了问题。但它似乎是一个更容易解决这个问题的实用工具


它搜索repo和文件夹之间的名称大小写不匹配,并更新repo以匹配文件夹,这样您就可以只提交一个版本的文件。所以,只要在Windows资源管理器中将名称更改为您想要的名称,然后运行该实用程序,我相信。(可能之后是一个承诺——不确定)

嗨,杰里米,谢谢你抽出时间。我知道在svn中需要两个步骤。请让我知道在吉特只。如果你使用“吉特重命名”在乌龟,从一开始,这是唯一的操作,你需要做的。(在最新版本中,因为他们修复了这个问题)但是,如果您使用Windows资源管理器重命名它,则需要按照您的建议执行两阶段重命名。(或其他解决方案——请参阅我的其他答案)嗨,亚诺斯,首先,非常感谢你。你也是这么说的,我想的是。可能是重命名,但不适用于乌龟。如果我在GitHub上重命名文件名,是否可以将重命名应用于所有依赖文件?如果对我有帮助,那就太好了。同样的事情,如果我使用egit进行提交和推送,效果会很好。你好,Janos,请你对我的问题投赞成票。因为,我是StackExchange的新手,而且我的分数还不到15。嗨,在GitHub上重命名本身应该是最后的选择。GitHub不知道它是什么类型的项目,因此无法重命名依赖文件。那将是重构,只有你的构建工具才能正确地做到这一点。@Satyarao.K你必须通过编写好的问题和答案来赢得选票。请求他们不是一个好主意。你好,Janos,我认为如果您使用egit,您不需要执行双向提交过程。我这样做了,我没有遇到任何问题。你能添加一个屏幕截图,显示错误对话框是什么吗?另外,这一点很重要,您使用的是Windows、Linux还是Mac?Windows将文件路径视为不区分大小写,而Linux和Mac在路径方面都区分大小写。嗨,Cupcake,我使用Windows,请找到上面的错误对话框。另外,新版本的TortoiseGit现在似乎有这个问题——只要从一开始就使用Git rename命令,它就应该可以工作。这是正确的答案,这只解决了一半——不管怎么说,当使用简单的资源管理器重命名时。启用此选项后,执行资源管理器重命名时,它会注意到有一个新文件,具有新的大小写,而不是将旧文件重命名为新的大小写。因此,回购协议最终有两种版本!它显示在Github等中,但不显示在Windows资源管理器中。在这种情况下,您可以通过将其重命名为
name\uu
,提交,然后重新命名并提交来修复它。(您也可以对父文件夹执行此操作,以应用所有子文件夹;但是,您可以搞乱其他文件的文件历史记录)