【问题标题】:VSTS GIT merge develop branch into master without master thinking it is 1 change-set ahead?VSTS GIT 将开发分支合并为 master 而没有 master 认为它是 1 个变更集?
【发布时间】:2017-02-26 16:54:55
【问题描述】:

我正在使用 VSTS GIT 源代码控制存储库并将我的开发分成两个分支,为持续开发而开发,然后是一个主分支以从中发布。

一切都很好,除了当我想将我的开发分支合并到主分支时,拉取请求完成,但它使主分支'1领先'开发分支,并且 VSTS GUI 不断提示我创建一个从主请求拉回开发。当我比较分支时,当然没有差异。

如何在没有 GIT 认为 master 现在领先 1 并且看起来一切都不同步的情况下将我的开发分支合并到 master 中?

谢谢!

【问题讨论】:

  • keeps prompting me to create a pull request from master into main - 你的意思是从develop到master?
  • 是的,抱歉,已编辑。从 develop 合并到 master 后,VSTS Branch GUI 不断提示说 master is 1-change ahead of development 并提示我从 master 创建另一个 pull request 回到 develop

标签: git version-control azure-devops azure-pipelines


【解决方案1】:

关于 VSTS git pull request merge,它会在存储库的分支级别生成具有不同 ID 的 pull request merge 的新提交。您可以在代码 > 文件 > 选择存储库 > 选择分支 > 历史记录中检查它。

例如:

所以,对于m1分支,指针指向25a5b862……,但对于master分支,它指向cc36e063……,这就是为什么master有1个m1头。

但是如果你用git命令合并分支并push到服务器,那么commit ids是一样的,所以前面的值是0。

关于你的问题,由于你将develop分支合并到master,你可以将master分支设置为比较分支(点击...>设置为比较分支)。 (结果:落后master 1)

【讨论】:

  • 我遇到了同样的问题。关于上述解决方案,我无法使用 Git 命令合并分支,因为之后我无法将 master 推送到服务器中(master 应该通过 Pull Request 合并)。而且我不想将 master 设置为比较分支。是否有任何其他解决方案不创建合并提交,以便两个分支保持在同一点?
  • 我和@DamiánPereira 处于同一位置。我希望 master 始终处于稳定的状态,因此不允许开发人员直接推动它。不幸的是,防止这种情况的唯一方法是强制 PRs 到分支,这总是会导致在开发分支之前有一个提交。我真正想说的是“好的,现在我刚刚推动开发的这个提交 # 现在已准备好发布版本,让我将它同步到 master 并让它启动发布管道”。似乎对我来说应该很简单......:s
【解决方案2】:

当您将 merge develop 分支到 master 分支时,会在 master 中创建一个新的合并提交(将类似 Merge branch 'develop' of <repo-name> 的消息提交到 master 中)但是这个新的合并提交在您的 develop 分支中不存在。

所以,当您签出“开发”分支时,git 认为 developmaster 后面的一个提交(合并提交)。

开发分支的主分支'1提前'

您可以将master 拉入develop 以忽略此消息。

$ git checkout develop
$ git pull origin master

【讨论】:

  • 所以通过本地开发 PC 上的 bash 终端这很好,但通过 VSTS GUI 似乎并没有提供解决此问题的选项?唯一的选择是 PR 回到从 master 开发,然后会产生同样的问题,即 master 落后,等等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 2016-04-30
  • 2016-09-20
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
相关资源
最近更新 更多