执行合并后在两个分支中同时提交

Posted

技术标签:

【中文标题】执行合并后在两个分支中同时提交【英文标题】:Simultaneous commit in two Branches after performing merge 【发布时间】:2019-04-02 21:36:06 【问题描述】:

我正在使用 Bitbucket 存储我的代码。我将更改部署到开发分支的步骤如下:

    git 状态 git commit -am "新提交" git push origin 到我从 master 创建的分支

在 Bitbucket 中,我比较了分支。如果一切正常,我继续合并。

问题:

合并后,在“提交”部分,我看到:

Commit in two branches

我可以看到两个提交,而不是单个提交:一个在我刚刚创建的分支中,一个在我合并到的分支中。

所以我的问题是:

¿这怎么会发生? ¿这是一个严重的问题吗? ¿我该如何解决这个问题?

提前感谢您的帮助,这真的很重要。

问候。

【问题讨论】:

那个截图,是不是告诉你原来的提交现在在两个分支中? 你能描述一下这两个提交吗?是相同的提交出现两次还是您的原始提交+合并提交?请在描述您的情况时更加明确。 我会尽力解释,请原谅我的粗鲁方式来表达我的观点。当我将更改推送到我的分支时,当我检查“提交”部分时,我可以在我的分支中正确看到提交。但是,合并后,当我再次检查“提交”部分时,我可以看到图像中描述的情况。 如果该图像意味着在合并后,您有 1 个提交出现在 2 个分支中,那么这是正常的,如果您可以从提交分支指向您要询问的提交。由于合并和分支拓扑,每个提交都可以出现在任意数量的分支上。 有什么方法可以链接到具有该图像的提交或分支或诸如此类的东西,或者在 bitbucket 上找到类似的情况,以便我们可以确切地看到该屏幕截图的含义? 【参考方案1】:

这取决于您执行的合并类型。我能够创建一个 Bitbucket 存储库并使用 fast-forward 进行合并,它在提交旁边生成了相同的“2 个分支”标签。

合并提交——保留源分支中的所有提交并进行 目标分支的一部分。此选项与在命令行中输入 git merge --no-ff 相同。 Squash——当您将源分支合并到目标分支时合并您的提交。此选项与在命令行中输入 git merge --squash 相同。 快进——将提交从源分支移动到 目标分支(如果目标没有新的提交)。

你的做法没有错。这只是您可以用来在存储库的分支之间移动代码更改的几种策略之一。我提供的链接更详细地介绍了各种策略以及何时使用它们。

如果您想撤消合并,Bitbucket 已经通过他们的网站引入了一项功能来执行此操作。

    在拉取请求中,单击右上角的 Revert 按钮。 (可选)从“恢复拉取请求”对话框中,更改您要创建的新分支的分支名称。点击还原按钮。 单击还原后,Bitbucket 将创建新分支。即使您取消拉取请求,恢复分支仍保留在存储库中。 “创建拉取请求”页面打开,其中还原分支作为源。添加审阅者并进行其他更改后,点击创建。

本回答内容来源于Bitbucket文档:Use a Git branch to merge a file:

【讨论】:

感谢您的回答。问题是,即使管道失败,我也可以看到目标分支中应用的更改。顺便说一句,在这次合并中,我使用了“合并提交”策略。 您能否更新您的问题,提供有关您的管道的更多详细信息以及这些信息如何满足您以不同方式记录您的健身历史的需要? 很抱歉评论晚了,但我在合并到分支和部署之间感到困惑。我相信,如果管道成功,则执行合并。我显然完全错了。感谢您的回答和 cmets。

以上是关于执行合并后在两个分支中同时提交的主要内容,如果未能解决你的问题,请参考以下文章

Git 分支合并

合并后的 Git 分支和提交历史记录

合并提交后在 git ci/cd 上触发脚本

Git不同项目代码分支合并,且仅合并特定提交

还原合并提交后解决合并冲突

git如何合并两个分支代码