【发布时间】:2013-12-30 03:13:32
【问题描述】:
首先,我是 git 新手,但一直在吃 documentation 和类似主题的类似问题,如 this 和 this(我将在后面的帖子中提到后一个问题)。
总结:我正在挑选从一个分支到另一个分支的提交,在一个分支上进行提交然后尝试将它们重新合并在一起之后,我收到了冲突。请参阅下面的答案,了解我的想法。
场景:我有两个文件,一个在“主”分支上,一个在“辅助”分支上。 “secondary”分支包含一些我们在master中不需要的文件,并且只被少数人使用,但是我们在“master”和“secondary”中拥有的大多数文件应该是一致的(master中的所有内容都是在中学,但中学的一切都不是在主人)。为此,我一直在提交在“master”中所做的更改,使用git checkout secondary 签出我的“secondary”分支,然后运行git merge master。不幸的是,我曾经提出过一次冲突,现在我的大脑正在翻腾,试图弄清楚冲突是什么。
尝试的解决方案:起初,我以为是因为我修改了“次要”和“主”中的文件,我有。为了解决这个问题,我使用git cherry-pick [commit] 将我在辅助分支中所做的更改拉到主分支中。但是,我仍然无法将我的主分支合并到辅助分支。 Git 建议使用git add/rm(大概是git add 或git rm,虽然我花了一点时间才弄清楚)来标记我想要的。因此,我使用git rm command 删除了“二级”中的索引和工作树中的版本。之后,我回到我的“master”分支,重新提交我想要合并到“secondary”的文件,回到“secondary”,然后再次运行git merge master。让我懊恼的是,冲突。
问题:坦率地说,我想我不知道发生了什么。我认为git merge master(在辅助分支上运行时)会接受在 git master 提交中所做的所有更改并将这些更改放在辅助分支中。如果是这样的话,我不明白这个问题。我已经从辅助文件中删除了这些文件,并在 master.xml 中提交了我的更改。为什么我不能合并?我之前提到的后一个问题的解决方案表明这可能是因为共同祖先包含其他东西,但我认为git cherry-pick [commit] 会处理这个问题。问题是cherry-pick 没有创建新的合并库,所以即使cherry-pick 之后有问题的文件相同,它们可能仍然与它们的合并库不同?
对于这个问题的冗长,我深表歉意,我非常努力地理解,感觉自己在绕圈子。任何建议都会很棒。
编辑:我想我也很困惑,因为我不明白为什么 git 不允许我更改分支来尝试解决这个问题。当我现在尝试git checkout secondary 尝试并且可能cherry-pick 提交更改为辅助时,我得到error: you need to resolve your current index first。我认为 git 不允许这种行为一定是有原因的,我只是不确定我明白它是什么。
【问题讨论】:
标签: git merge git-merge git-cherry-pick