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