0

我以前使用过其他 DVCS 系统,但我是 git 新手。所以我认为我对如何按照我的意图使用它有错误的假设。

我有一个 RepoA,它有一个 master 和 development 分支,我在其中完成大部分工作。不久前,我从 RepoA 中克隆了 RepoB 以开始研究“BigFeatureA”,并在开发分支中也这样做了。我还没有完成 BigFeatureA,但我想带来自我进行克隆以来在 RepoA 中所做的所有更改,以便我继续使用最新的代码在 BigFeatureA 上工作。(目前在 RepoA 中,develop 和 master 分支是相同的,但当然,有时它们不是。)使用在 RepoB 中工作的 XCode,我从 RepoA 开发分支中提取了一个。我遇到了冲突,解决了它,启用了拉动按钮,然后进行了拉动。

现在在 RepoB 中,带来的所有更改都是“未提交的更改”,文件显示为“M”或已修改。因此,没有任何提交消息或任何东西来自 RepoA,只是源代码发生了变化。这不是我所期望的。这只是 XCode 版本的 git 工作流还是 git merge 的工作方式?

我的最终工作流程是在 BigFeatureA 完成后将 RepoB 推送到 RepoA。这样做和走向另一个方向,即:在 RepoA 和从 RepoB 拉动之间有区别吗?

(进一步阅读表明我可能应该在 RepoB 中创建一个“BigFeatureA”分支,然后在其中的开发分支上从 RepoA 拉取,然后从 BigFeatureA 分支合并到开发分支。这样做会有所不同分支与回购之间的合并?)

4

1 回答 1

0

不,这不是预期的行为。将所有更改保留为已修改文件的原因是因为它已“放弃”合并。

在发布时我不知道的信息是相关的 -> 我创建了最初不知道将 .DS_Store 放入 .gitignore 文件的存储库。我在那里有 *.DS_Store 很长时间了,但我可能在这样做之后没有正确清理。看起来存储库中有“许多” .DS_Store 文件,并将其放入 .gitignore 文件似乎只是意味着“从现在开始”,而不是“从我之前所做的”。

所以在上面,Xcode 抱怨 .DS_Store 文件被修改了,因为它不知道如何解决该类型文件中的冲突,所以它就放弃了。它没有处理文件已在 RepoA 中删除的事实,它也需要在 RepoB 中删除。其次,虽然它在文件列表中显示 .DS_Store,但它不是主文件夹中的 .DS_Store,它是文件层次结构中某处的一个或多个 .DS_Store 文件。因此,无论我通过命令行删除 git 中的顶级 .DS_Store 多少次,Xcode 都不会高兴。所以我不知道它在谈论哪个.DS_Store 文件。看起来 Xcode 不适合在您的项目中拥有多个同名文件。

修复方法是关注另一个SO 帖子,您可以在其中找到层次结构中的所有 .DS_Store,将它们 git rm 然后通过命令行 git commit all。然后 Xcode 合并将完成,您将不会留下从拉取中修改过的文件。

于 2012-11-28T18:40:26.933 回答