如何从 Xcode 项目中删除第二个远程 Git 存储库?

10
在处理一个大型客户项目时,我添加了几个源文件来自我公司的另一个项目(调试工具)。这两个项目都连接到远程存储库中。
我可能从项目窗口拖动文件而不是从查找器中拖动,或者没有在添加结果对话框中点击“复制文件(如果需要)”。
无论如何,当我现在尝试推送或拉取时,它列出了与该项目连接的所有远程存储库。
我不想让我的客户项目与我公司的其他存储库联系在一起。我希望项目中的所有文件都来自客户端的存储库。
我尝试删除我添加的源文件,然后使用“复制文件”复选框重新添加它们,但它仍然列出了另一个远程存储库。
如何从项目中删除第二个不需要的git存储库?
编辑:
请注意,实际上项目包含在Xcode工作区中。我刚在我的工作区的.xcworkspace/xcshareddata/.xcscmblueprint文件中发现了不需要的存储库的提及。
5个回答

26

既然正确答案这里没有,那我来回答一下:你需要删除Xcode的衍生数据(Derived Data),这样它才能在你从项目中移除对其他git存储库源文件的引用后忘掉这个链接。

最简单的方法是打开Xcode -> Preferences,进入Locations标签,点击Derived Data位置旁边的小箭头(在红框中):

图片描述

只需删除整个文件夹(定期清理可以释放空间),就可以解决问题了!


3
这对我有用(还需要重新启动 Xcode)。谢谢。 - rodfleischer
1
很酷!它很有用且易于操作。只需重新启动Xcode即可完成。如果您没有其他项目文件夹中的文件,那就没问题了。 - Oleh H
1
这是最有效的方式! - 钟智强

6

请在终端中尝试:

$ cd /my/project/folder
$ git remote

现在你知道了遥控器的名称。
$ git remote remove myUnwantedRemote

当然,如果您使用SourceTree,即使没有终端,这一切也很容易。

3
马特,感谢您的快速回复。命令“git remote”只返回“origin”。另一个存储库并非不必要的。它是属于我们公司的项目,而不是客户的。我希望它仍然可以在Xcode中使用,但不与客户项目相关联。(请参见我问题的编辑。) - Duncan C
尝试使用 git remove --verbose 获取更多信息。 - matt
git remote --verbose,还是git remove --verbose - Duncan C
我刚在我的工作区的.xcworkspace/xcshareddata文件中发现了一个不需要的repo的提及。太棒了!你可以尝试手动编辑。否则,这是我的建议:当你推送/拉取时,使用SourceTree(或终端),而不是Xcode。我们可能永远无法弄清楚Xcode从哪里获取关于此的想法。让我们面对现实吧,Xcode源代码控制支持真的很糟糕。就我个人而言,我已经关闭了它。 - matt
非常赞同。我长期以来一直是一个git命令行用户,但我认为SourceTree非常好用。 - matt
显示剩余4条评论

1
上述解决方案对我的情况没有帮助,但我找到了另一种解决方法。
如果您的项目中使用了cocoapods,那么多个xcode存储库的问题也可能存在。
例如,您有一个名为project_1的旧项目。您成功地将该项目克隆到一个名为project_2的新项目,并将所有数据推送到一个新的git存储库中。
现在,在新项目project_2和旧项目project_1的Repositories选项卡中,您突然可以看到旧的和新的存储库。
问题很可能与旧项目中仍然存在的Pods引用有关。因此,Xcode会加载两个存储库,因为某些pod文件仍然引用旧项目。
如果是这种情况,我建议执行以下操作:
- 将project_1和project_2的所有更改推送到它们的git存储库 - 删除包含project_1和project_2的所有目录,并重新检出(克隆)项目。 - 如果在这种情况下仍然看到多个存储库,则执行以下操作: - 在两个项目目录中运行命令“pod deintegrate”,然后运行命令“pod cache clean --all” - 然后在project_1和project_2目录中运行命令pod install
希望现在您不再在两个项目之间有任何引用,并且在“Repositories”选项卡上您只能看到一个存储库。

1

如上面的答案所述,我在执行"git remote"命令时只得到了一个origin,尽管在Xcode中显示了两个仓库。上面的解决方案对我没有起作用。我可以看到问题存在于左侧的仓库选项卡中,但是我无法从那里找到解决方法。

有效的方法是临时更改我复制文件的项目目录名称。如果文件名变成红色,说明你已经看到了相关文件。在我的情况下,我没有看到这些文件,但是当我进行清理和重建项目时,它出现了xcassets的问题。事实上,我是从一个类似的项目中“复制”了xcassets文件,但是它与同一个文件关联起来了。删除xcassets红色条目后,我从项目的“资源标签”选项卡中进行了“导入”操作,并检查确认我现在的项目中有一个xcassets文件。

我的描述可能听起来很复杂,但整个过程在Nabeel的回答中有更详细的描述:如何从Xcode项目中移除第二个远程git仓库?


1
在Xcode中,项目导航器旁边有一个源代码控制导航器:

enter image description here

在那里,您可以添加/删除远程


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