Git fetch:Remote不断删除和添加分支

时间:2015-09-11 14:08:03

标签: git

每次我从所有遥控器上取文时,其他用户的遥控器会不断删除分支并重新添加

使用修剪获取:

git -c diff.mnemonicprefix=false -c core.quotepath=false fetch --prune jcaseiro
From https://my.url.com/jcaseiro/project-android
 x [deleted]         (none)     -> jcaseiro/Sprint8/bugfix/SIMSwap-Master
 x [deleted]         (none)     -> jcaseiro/Sprint8/bugfix/addCheckForNullLinkFragment
 x [deleted]         (none)     -> jcaseiro/Sprint8/bugfix/fixErrorRedirectsPPEScreen
 x [deleted]         (none)     -> jcaseiro/Sprint8/bugfix/fixNullPointerExceptionDropboxInfo
 x [deleted]         (none)     -> jcaseiro/sprint7/bugfix/Fix_clickable_almost_there_screen
 x [deleted]         (none)     -> jcaseiro/sprint7/bugfix/PromoTextAlbanianString
 x [deleted]         (none)     -> jcaseiro/sprint7/bugfix/addCheckForNullLinkFragment
 x [deleted]         (none)     -> jcaseiro/sprint7/bugfix/fixPPEErrorRedirects

 * [new branch]      Sprint7/bugfix/Fix_clickable_almost_there_screen -> jcaseiro/Sprint7/bugfix/Fix_clickable_almost_there_screen
 * [new branch]      Sprint7/bugfix/LogoutNotificationProblem -> jcaseiro/Sprint7/bugfix/LogoutNotificationProblem
 * [new branch]      Sprint7/bugfix/PromoTextAlbanianString -> jcaseiro/Sprint7/bugfix/PromoTextAlbanianString
 * [new branch]      Sprint7/bugfix/addCheckForNullLinkFragment -> jcaseiro/Sprint7/bugfix/addCheckForNullLinkFragment
 * [new branch]      Sprint7/bugfix/fixPPEErrorRedirects -> jcaseiro/Sprint7/bugfix/fixPPEErrorRedirects
 * [new branch]      Sprint7/bugfix/fixWrongBehaviorBroke -> jcaseiro/Sprint7/bugfix/fixWrongBehaviorBroke
 * [new branch]      Sprint7/bugfix/fixWrongBehaviorBroke1.3 -> jcaseiro/Sprint7/bugfix/fixWrongBehaviorBroke1.3
 * [new branch]      Sprint8/Bugfix/SIMSwap-Master -> jcaseiro/Sprint8/Bugfix/SIMSwap-Master
 * [new branch]      Sprint8/Bugfix/addCheckForNullLinkFragment -> jcaseiro/Sprint8/Bugfix/addCheckForNullLinkFragment
 * [new branch]      Sprint8/Bugfix/fixErrorRedirectsPPEScreen -> jcaseiro/Sprint8/Bugfix/fixErrorRedirectsPPEScreen
 * [new branch]      Sprint8/Bugfix/fixNullPointerExceptionDropboxInfo -> jcaseiro/Sprint8/Bugfix/fixNullPointerExceptionDropboxInfo

即使我删除了遥控器并再次添加它,它也会继续发生。

这只发生在这个特定的遥控器上,但我相信我的本地git有问题,因为这个项目的其他开发人员都没有经历过这样的事情**。

无需修剪(每次):

 git -c diff.mnemonicprefix=false -c core.quotepath=false fetch jcaseiro
From https://my.url.com/jcaseiro/project-android

 * [new branch]      Sprint7/bugfix/Fix_clickable_almost_there_screen -> jcaseiro/Sprint7/bugfix/Fix_clickable_almost_there_screen
 * [new branch]      Sprint7/bugfix/LogoutNotificationProblem -> jcaseiro/Sprint7/bugfix/LogoutNotificationProblem
 * [new branch]      Sprint7/bugfix/PromoTextAlbanianString -> jcaseiro/Sprint7/bugfix/PromoTextAlbanianString
 * [new branch]      Sprint7/bugfix/addCheckForNullLinkFragment -> jcaseiro/Sprint7/bugfix/addCheckForNullLinkFragment
 * [new branch]      Sprint7/bugfix/fixPPEErrorRedirects -> jcaseiro/Sprint7/bugfix/fixPPEErrorRedirects
 * [new branch]      Sprint7/bugfix/fixWrongBehaviorBroke -> jcaseiro/Sprint7/bugfix/fixWrongBehaviorCloudBroker
 * [new branch]      Sprint7/bugfix/fixWrongBehaviorBroke1.3 -> jcaseiro/Sprint7/bugfix/fixWrongBehaviorCloudBroker1.3
 * [new branch]      Sprint8/Bugfix/SIMSwap-Master -> jcaseiro/Sprint8/Bugfix/SIMSwap-Master
 * [new branch]      Sprint8/Bugfix/addCheckForNullLinkFragment -> jcaseiro/Sprint8/Bugfix/addCheckForNullLinkFragment
 * [new branch]      Sprint8/Bugfix/fixErrorRedirectsPPEScreen -> jcaseiro/Sprint8/Bugfix/fixErrorRedirectsPPEScreen
 * [new branch]      Sprint8/Bugfix/fixNullPointerExceptionDropboxInfo -> jcaseiro/Sprint8/Bugfix/fixNullPointerExceptionDropboxInfo

出于提供信息的目的,我使用SourceTree,但通过命令行执行此操作具有完全相同的效果。

我已经搜索了很多内容,但是没有找到答案......

1 个答案:

答案 0 :(得分:2)

如果您在Windows上使用git,则会遇到以下问题:

  • 有多个分支只能通过大小写区分,或
  • 将分支重命名为其他案例。

查看您的回购邮件any下的内容,了解发生了什么。将此与.git/refs/remotes/进行比较。最好不要直接触摸那些git ls-remote文件,而是使用git命令对它们进行操作,这样就不会破坏本地存储库。

如果分支已重命名为其他情况,则需要清理git refs,例如

.git

对于每个被删除并在每次提取时重新创建的分支,您应该重复此操作。如果文件夹的大小写发生了变化,您可能需要详尽地git update-ref -d Sprint8/Bugfix/SIMSwap-Master 整个refs文件夹。 (我刚刚为大约200个分支做了这个 - 我在fetch输出上运行了一个vim宏来生成200个命令 - 据我所知,没有一个选项递归git update-ref -d一个文件夹refs。)下一次获取将最后一次获得任何重命名的分支,但随后的提取将不再获得该分支。

如果分支没有被重命名,但实际上存在多次只是区别大小,你应该要求创建分支的开发人员删除额外的分支,这样就没有只有大小写不同的分支。 每次获取都会看到相同的分支,直到不再有重复的分支只有大小写不同。

在Windows git bash上,您可以尝试使用以下命令列出仅按大小写不同的所有分支:

git update-ref -d