XCode git pull之后的工作流混乱

时间:2012-11-09 18:21:30

标签: xcode git git-pull

我之前使用过其他DVCS系统,但我是git的新手。所以我认为我对如何以我想要的方式使用它有错误的假设。

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

现在在RepoB中,带来的所有更改都是“未提交的更改”,文件显示为“M”或已修改。因此RepoA没有提交任何提交消息或任何内容,只是源更改。这不是我的预期。这只是XCode的git工作流版本,还是这就是git merge的工作原理?

我最后的工作流程是在BigFeatureA完成后将RepoB推送到RepoA。这样做与另一个方向之间是否有区别,即:在RepoA中并从RepoB中拉出来?

(进一步阅读表明我可能应该在RepoB中创建一个“BigFeatureA”分支,然后在那里的开发分支上从RepoA完成拉动,然后从BigFeatureA分支合并到开发分支。是否会有在分支与repo之间进行合并的区别?)

1 个答案:

答案 0 :(得分: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 post,在那里找到层次结构中的所有.DS_Store,git rm它们然后通过命令行git commit all。然后Xcode合并将完成,你不会留下拉动修改过的文件。

相关问题