我在解决这些问题时遇到了一些麻烦:
目前我正在intercom-bridge
分支master
(最初是黄线),这是external-service-user
的一个分支。为了实现新功能,我从intercom-bridge
创建了一个分支intercom-bridge
(黑线),然后当我将此分支合并到intercom-bridge
时,我得到了这个结果。
我认为问题是我在与external-service-user
合并之前对external-service-user
进行了更改。
我想要的是组织提交,以便查看所有更改都是在一个分支中进行的。如果可能,将黑线(intercom-bridge
)合并到黄线(NSItemProviderCompletionHandler
)。有可能吗?
答案 0 :(得分:1)
C 是一个与 external-service-user 完全相同的分支,然后您尝试在其中合并master。
如果您无法进入像C
这样的分支状态:
你可以做些什么。首先确定触发合并的提交,这里它是从黄色线左边到右边的第3个黄点。让我们调用此提交哈希3
,但您必须使用历史记录中的实际哈希值进行替换(感谢上尉明显哈哈)。
git checkout 3
git checkout -b C
在C
州创建分支时:
git fetch
git checkout C
git rebase -p origin/master
这应该足够了。如果出现冲突,请解决它们,然后将git add
与相关文件一起使用,一旦将它们全部添加到索引中(使用git status检查 - >如果您忘记了其中一个,它们通常被描述为“已修改”) ,使用git rebase --continue
。
Rebase策略重放您尝试重新绑定的分支之前的每个提交,所以如果文件似乎有多次冲突,请不要惊慌,只需重复上述步骤,直到冲突全部解决
此外,-p
选项(p表示保留)很重要,因此在此过程中,来自master的任何先前合并都不会被重新定义。
答案 1 :(得分:0)
如果您希望单个分支包含所有更改,您只需将内容(分支)拉到所需的分支
# checkout master branch
git checkout master
# merge all the desired branches into master
git merge external-user-service intercom-bridge
现在master包含所有3个分支中的所有更改。
cherry-pick
git cherry-pick
允许您选择在任何分支中对任何其他分支进行的任何提交。在您的情况下,您可以简单地签出主分支,然后cherry-pick
来自您希望的任何分支的所有提交(cherry-pick
支持范围,以便您可以指定开始和结束提交而不是列出所有提交)
这样您就可以控制提交在合并分支中的显示方式。
例如:
git cherry-pick ebe6942..905e279