首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >手动关闭bitbucket的拉请求

手动关闭bitbucket的拉请求
EN

Stack Overflow用户
提问于 2013-02-06 11:22:25
回答 3查看 48K关注 0票数 26

我的问题

我做过这样的事:

代码语言:javascript
运行
复制
git clone
git checkout -b new_feature
< work and commit >
git rebase master
< work and commit >
< finish working >
git rebase master
git push origin new_feature
< I create pull request via bitbucket's web interface >

审查更改的人正在做以下工作:

代码语言:javascript
运行
复制
git pull
git checkout master
git merge --squash new_feature
git push origin master

我希望这将关闭拉的请求,因为接受了,但它没有,我错过了什么?

一些背景资料

我读了很多bitbucket的文档“处理拉请求”,但这一点对我来说还不清楚。

我可以看到来自new_feature分支的所有提交都已应用于master分支(通过git merge --squash),并且我可以看到哪些文件已经更改,但是现在当我在bitbucket的拉请求接口上按下" merge“时,我在主服务器中有另一个提交,即合并,这不会改变任何文件(以前的git merge --squash已经应用了所有更改),而只是将所有这些提交历史记录导入到主服务器中,这不是我想要的。

Via:https://confluence.atlassian.com/display/BITBUCKET/Working+with+pull+requests

手动将请求拉到本地系统 有时,在接受拉请求之前在本地系统上测试更改集的工作流是个好主意。您可以使用任何拉请求来完成此操作。典型的工作流程是:在Bitbucket中接收拉请求。使用传入的变更集更新本地存储库。调查和/或测试更改集。如果更改集很好,则将其合并到本地存储库中。你可能需要解决一些冲突。然后,将本地存储库推回Bitbucket。回到Bitbucket上,在“拉请求”选项卡中将“拉请求”标记为“接受”。如果不喜欢更改请求,则在本地放弃更改,并拒绝Bitbucket上的拉请求。想法?

EN

回答 3

Stack Overflow用户

发布于 2015-12-16 23:04:18

据我所知,有两种方法可以将Bitbucket拉请求关闭为“合并”。

  1. 单击“合并”按钮。Bitbucket将将您的功能分支合并到目标分支中。(较新版本的Bitbucket允许您在旧版本隐式使用--不-ff)
  2. 使用git控制台命令(或其他接口)将您的功能分支合并到您的目标分支中,然后将两者推入原点。

第一种选择无疑是最简单和最直接的,但它在某些开发工作流中不能很好地工作。

使第二个选项工作的关键是您的功能分支必须位于目标分支上。Bitbucket定期检查已手动合并的拉请求,并在找到时自动将这些拉请求标记为已合并。注:亚特兰西安没有为这种行为做广告。我没有找到任何官方文件支持这一说法,但至少还有一个人在那里https://stackoverflow.com/questions/31135212/git-flow-with-bitbucket-pull-requests

根据您描述的工作流程,我猜查看和推动您的更改的人有一个git历史记录,如下所示:

代码语言:javascript
运行
复制
*   ddddddd (origin/master, master) new feature, squashed
| * ccccccc (origin/new_feature, new_feature) new feature part C
| * bbbbbbb new feature part B
| * aaaaaaa new feature part A
|/
o

在这种情况下,让Bitbucket自动关闭拉请求的最简单方法是:

代码语言:javascript
运行
复制
git branch --force new_feature ddddddd
git push --force origin new_feature

这也适用于已经重新建立的特性分支。

警告!将以下事实牢记在心:

  • 并不是所有的工作流都允许这种强制推进。
  • 每次功能分支发生变化时,由拉请求显示的Bitbucket 自动更新提交。根据推进分支的顺序,这可能导致空提交列表。(下文将对此作更多介绍。)
  • 当拉请求关闭时,任何提交历史记录和差异信息都会被冻结。

当您在推送功能分支之前将目标分支推送到原点时,Bitbucket首先查找新推出的特性分支上没有在目标分支上的任何提交。因为新的特性分支是目标分支的祖先,所以结果是空集。因此,Bitbucket从拉请求的提交选项卡中删除所有提交,该选项卡现在读到,“没有任何更改”。然后,由于功能分支位于目标分支的历史记录中,Bitbucket关闭拉请求,冻结空提交选项卡:

奇怪的是,在这种情况下,差异保持不变。

如果上述合并选项中没有一个对您有效,则您剩下的唯一选项是:

  • 拒绝拉请求。
  • 考虑将您的工作流更改为更容易支持的工作流程。
  • 浮动特性请求与Bitbucket/亚特兰西安。

还请参阅基支吉特推的文档。

票数 18
EN

Stack Overflow用户

发布于 2016-11-02 13:41:41

BitBucket服务器4.5.1修改了远程合并在拉请求中的分类方式(即拒绝或合并)。

@BenAmos上面的回答效果很好,但是如果在强制推到功能分支之前将合并提交到目标分支,BitBucket将自动关闭拉请求,并将其归类为“谢绝”。

但是,如果在将合并提交到目标分支之前强制推到特性分支,BitBucket将自动关闭拉请求并将其归类为“合并”。

在亚特兰西安:“推送后,拉请求将被拒绝,如果:没有提交到分支,并且在同一推送中未更新到分支。”

参考资料:ga=1.138319284.547646488.1457297841

票数 1
EN

Stack Overflow用户

发布于 2017-04-14 10:26:27

我想,bitbucket不承认您的PR是合并的,因为git merge --squash生成一个完全的新提交。在我们公司,当我们将git merge --squash功能分支合并为主要分支时,我们也尝试了它们,但我们放弃了它,因为拉请求合并的方式一直存在,后来我们需要“拒绝”它们或者删除相关的远程特性分支。

我们目前正在做的是压缩所有特性分支提交为一个,并强制将其推送到一个远程特性分支。在此之后,负责合并到主服务器的人员只需在bitbucket的拉请求页面上单击"Merge“,即PR标记为”Merge“,在功能分支中引入的所有更改都压缩成一个完整的提交。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14727837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档