Git远程两个分支同名但大小写不同

16
origin/joetest
origin/JoeTest

我有一个问题,我在git中有两个名称相同但大小写不同的远程分支。

我无法在Visual Studio Online中解决如何处理它们,因为存在冲突,尽管我可以看到它们之间的差异。

Visual Studio中的git工具和git bash无法区分这两种情况,导致正在使用它们的人之间的同步出现了问题,其中一些提交在一个上,另一些提交在另一个上。

您对我们能做什么有什么想法吗?

谢谢。

3个回答

14

在一个区分大小写的文件系统上(例如Linux),克隆存储库,然后重命名其中一个分支,将其推送并删除旧分支:

git clone <url> repo
cd repo
git checkout -b joetest2 origin/JoeTest
git push origin joetest2:joetest2
git push origin :JoeTest

关于为什么 Git 在使用大小写不同的分支名称时出现问题,请查看此相关问题


1
谢谢。如果我没有访问区分大小写的文件系统的机会……我们都在这里使用Windows…… - Kisbys
你可以在虚拟机中启动一个小型的Linux来解决这个问题;但是让我尝试复制这个问题,看看是否可以仅在Windows内部解决它。 - poke
告诉你,我会下载Ubuntu,不想让你为我辛苦工作!! - Kisbys
哈哈,好的;虽然...我现在在Windows上试过了。如果你从头开始克隆,上述命令应该能正常工作;至少对我来说刚刚才成功了 :) - poke
你不需要使用Linux虚拟机或任何其他工具,只需使用git mv命令即可。请参考https://dev59.com/hlwZ5IYBdhLWcg3wIdR7#37744442。 - bradgonesurfing
1
要删除旧分支而无需创建新克隆或使用区分大小写的文件系统,您还可以进入 .git\refs\remotes\origin 目录并临时更改文件夹名称以匹配您要删除的 joetestJoeTest 变体。 - veertien

0

如果涉及到GitLab,只是描述一种做这件事的方法。

我们有两个名称类似的分支: (1) develop - 官方分支 (2) Develop - 坏分支 只有大小写不同。

由于两个分支的名称类似,无法将坏的“Develop”分支拉入SourceTree。

解决方法如下:

我们需要将不好的分支“Develop”重命名,但GitLab没有提供相应的机制。因此,在GitLab门户网站上,我们从旧分支创建了新分支(称之为Develop_Bad)。 (a) 转到GitLab门户网站,依次选择Gitlab//Repository/Files。选择不良分支Develop,例如:https://gitlab.com/mobilityone/GEMS/-/tree/Develop (b) 在[Develop] GEMS/[+]下拉列表中,选择New Branch (c) 命名新分支Develop_Bad 将Develop_Bad拉入本地机器上的SourceTree。
合并Develop_Bad到官方develop分支中,解决任何合并冲突。将更改推送到远程。
删除GitLab门户网站中的坏分支“Develop”、“Develop_Bad” (a) 转到Gitlab//Repository/Branches的GitLab门户网站 https://gitlab.com/mobilityone/GEMS/-/branches (b) 在活动分支部分,查找坏分支Develop (c) 在这个条目旁边,有一个删除分支图标(垃圾桶图标)。在确保您不会丢失任何数据后,单击此图标以删除该分支。 (d) 对Develop_Bad执行同样的操作。

-1

我刚刚发现了一些神奇的东西,它可以在Windows下运行。我有两个目录:

XUnitRemoteXunitRemote

我做了以下操作:

 git mv XunitRemote XUnitRemote.todo
 git mv XUnitRemote.todo XUnitRemote

而且它只是工作了


git mv 适用于文件/目录。这个问题是关于分支的。 - poke
你说得对。我正在寻找我的解决方案,偶然看到了这个,读错了。 - bradgonesurfing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接