Xcode 项目显示两个 git 存储库(只有一个是正确的);提交给两者

标签 xcode git

我是 git 的新手。所以,我很困惑,可能没有使用正确的术语。

我有两个独立的 Xcode 项目,每个项目都有自己的本地存储库。尽管项目名称相似,但每个项目都有独立且不同的源文件。我对每个项目都做了几次提交,但是当我在一个项目中提交时,提交会同时出现在两个项目中。我的新项目在 git 导航器中显示了这两个项目(这可能与问题有关)。当我进行新提交时,旧项目未在 Xcode 中打开。

每个项目都有自己的 .git 文件夹。

详细信息:

旧项目 1(“调度程序”):显示一个存储库,但我在新项目中所做的最后一次提交出现在那里。

XCode UI showing Scheduler project

新项目 2(“Scheduler6”):显示两个存储库,我在那里所做的最后一次提交显示在两个存储库中。

XCode UI showing Scheduler and Scheduler6 projects

为什么项目 2 显示两个存储库,这就是我的提交最终出现在两个存储库中的原因吗?如何纠正?这以前发生过,我在旧存储库中执行了“git reset HEAD^”以删除不正确的提交。我想永远停止这种行为。 (而且我对在终端中使用 git 命令犹豫不决。)

最佳答案

谜底揭晓。我通过从项目 1 中复制大量文件创建了项目 2,但三个图像文件最终作为对项目 1 文件的引用,而不是副本。当我删除这些引用并将副本添加到项目 2 时,GIT 导航器停止显示项目 1 存储库。

总结:项目 2 显示了两个 GIT,因为项目 2 引用了项目 1 中的一些文件。

有两种方法可以解决这个问题:

一个。 手动:打开项目 2,选择每个文件(一个接一个),并检查身份和类型检查器中显示的完整路径是否为项目 2 路径。修复所有引用项目 1 的文件。

B. 使用终端:Xcode 项目控制文件是一个文本文件,因此可以使用终端命令自动检查所有完整路径,因此:

(我假设这两个项目分别命名为 Project_1 和 Project_2,并且它们的项目文件夹共享相同的父文件夹。)

  1. 复制 Project_2.xcodeproj(实际上是一个包)。

  2. 将副本的文件名后缀从 .xcodeproj 更改(我使用 .xxx)。复制的"file"变成包含四个项目的子文件夹,其中一个是文本文件(“project.pbxproj”)。

  3. 启动终端。

  4. 在终端中,执行“cd path_to_project_2_subfolder”。快捷方式:键入“cd”,空格,将第 2 步中创建的文件夹拖到终端,然后按回车键。

x。 (验证步骤。)在终端中,执行“ls”以显示四个项目。它们应该是:

project.pbxproj  project.xcworkspace/  xcshareddata/  xcuserdata/
  1. 在终端中,执行“strings project.pbxproj | grep ../Project_1/”。这显示了 project.pbxproj 中引用 Project_1 的所有行。 '|' 是一个管道命令,它将 strings 输出发送到过滤字符串的 grep。因为我的两个项目名称只有一个字符不同,所以我用'../'和'/'包围了项目名称,以将输出限制为属于的目录和文件到 Project_1,但如果您的两个名称不相似,您可以只使用裸项目名称。命令和参数区分大小写。您应该会看到一些引用 Project_1 的行。您还可以在文本编辑器中打开 project.pbxproj 并搜索包含 Project_1 的行。

我的一个文件(sharing.png)就这样出现了:

1F4E32C32343DE1A0053C239 /* sharing.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = sharing.png; path = ../../../../Project_1/sharing.png; sourceTree = ""; };

  1. 在 Xcode 中打开 Project_2 并修复在 strings 命令中显示为引用的文件。在此过程中,使用方法 A(上文)验证您的工作。

  2. 检查 GIT 导航器是否仅显示项目 2。您可能需要关闭 Xcode 并重新启动。

关于Xcode 项目显示两个 git 存储库(只有一个是正确的);提交给两者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58531499/

相关文章:

objective-c - 将 Xcode 组创建为文件系统文件夹的工作流程

git - 在 Bitbucket 中显示 PR 构建状态

git - 将现有的 Visual Studio 2013 项目添加到 Git 源代码管理

git - 回到 Github Desktop 中的上一个提交

ios - 为什么git pull不更新本地更改的文件?

android - 在 phonegap 的新项目中总是显示一些警告

ios - 如何(或是否)在 iOS 应用程序中使用 Skia(或任何未知)字体

swift - 类在两者中都实现...将使用两者之一。定义的是哪一个

iphone - 执行 symbolicatecrash 命令时出错 "Can' t exec "/usr/bin/xcode-select": No such file or directory at/usr/bin/symbolicatecrash"

git - 用于运行 glassfish 服务器并从 git 存储库部署特定应用程序的 dockerfile 的内容