我是 git 新手。所以,我很困惑,可能没有使用正确的术语。
我有两个独立的 Xcode 项目,每个项目都有自己的本地存储库。尽管这些项目具有相似的名称,但每个项目都有单独且不同的源文件。我已经对每个项目进行了几次提交,但是当我在一个项目中提交时,该提交会同时显示在两个项目中。我的新项目在 git 导航器中显示了两个项目(这可能与问题有关)。当我进行新的提交时,旧项目未在 Xcode 中打开。
每个项目都有自己的 .git 文件夹。
细节:
旧项目 1(“调度程序”):显示一个存储库,但我在新项目中所做的最后一次提交出现在那里。
新项目 2(“Scheduler6”):显示两个存储库,我在那里所做的最后一次提交都显示在这两个存储库中。
为什么项目 2 显示两个存储库,这就是我的提交最终出现在两个存储库中的原因吗?如何纠正?这种情况以前发生过,我在旧存储库中执行了“git reset HEAD^”以删除不正确的提交。我想永远停止这种行为。(我对于在终端中使用 git 命令犹豫不决。)
谜团已揭开。我通过从项目 1 复制大量文件来创建项目 2,但三个图像文件最终成为对项目 1 文件的引用,而不是副本。当我删除这些引用并将副本添加到项目 2 时,GIT 导航器停止显示项目 1 存储库。
摘要:项目 2 显示了两个 GIT,因为项目 2 引用了项目 1 中的一些文件。
有两种方法可以解决这个问题:
A. 手动:打开项目 2,选择每个文件(逐个),然后检查身份和类型检查器中显示的完整路径是否为项目 2 路径。修复引用项目 1 的所有文件。
B. 使用终端:Xcode 项目控制文件是一个文本文件,因此可以使用终端命令自动检查所有完整路径,因此:
(我假设这两个项目名为 Project_1 和 Project_2,并且它们的项目文件夹共享相同的父文件夹。)
重复Project_2.xcodeproj(实际上是一个捆绑包)。
更改重复文件的文件名后缀.xcodeproj(我使用过.xxx)。复制的“文件”成为包含四个项目的子文件夹,其中之一是文本文件(“ project.pbxproj”)。
启动终端。
在终端中,执行“ cd path_to_project_2_subfolder”。快捷方式:输入“ cd”、空格,将步骤 2 中创建的文件夹拖到终端,然后按回车键。
X。(验证步骤。) 在终端中,执行“ ls”以显示四个项目。他们应该是:
project.pbxproj project.xcworkspace/ xcshareddata/ xcuserdata/
Run Code Online (Sandbox Code Playgroud)
strings project.pbxproj | grep ../Project_1/”。这显示了project.pbxproj中引用Project_1的所有行。' |' 是一个管道命令,它将输出发送strings到grep过滤字符串。由于我的两个项目名称仅相差一个字符,因此我用“ ../”和“ /”将项目名称括起来,以将输出限制为属于 Project_1 的目录和文件,但如果您的两个名称不匹配,则可以只使用裸项目名称。 -相似的。命令和参数区分大小写。您应该看到一些引用 Project_1 的行。您还可以project.pbxproj在文本编辑器中打开并搜索包含Project_1.我的文件之一(sharing.png)如下所示:
1F4E32C32343DE1A0053C239 /* 共享.png */ = {isa = PBXFileReference; 最后已知的文件类型 = image.png; 名称=共享.png;路径=../../../../Project_1/sharing.png; 源树=“”;};
在 Xcode 中打开 Project_2 并修复在 strings 命令中显示为引用的文件。在此过程中,使用方法 A(上面)来验证您的工作。
检查 GIT 导航器是否仅显示项目 2。您可能必须关闭 Xcode 并重新启动。
| 归档时间: |
|
| 查看次数: |
1650 次 |
| 最近记录: |