Squashing提交一个bitbucket pull请求的提交

时间:2014-11-08 17:23:49

标签: git bitbucket pull-request rebasing

我正在尝试使用可用于小型开发团队来管理我们的开发过程的git流版本,大多数员工都是git和bitbucket的新手。我对两者都有更多的经验,但我绝不是专家。我们需要对上游开发的拉取请求进行单一提交,到目前为止我已经制定的流程如下:

假设来自上游的存储库的现有分支。另外,请注意,我知道其中一些命令可以合并,但我也首先尝试教授基础知识。这是它的记录方式(或多或少,我在实际文档中更加冗长)。

# checkout
$ git checkout develop

# update
$ git pull --rebase upstream develop 

# Create topic branch
$ git branch <topic branch name>

# Checkout topic branch
$ git checkout <topic branch name>

做好工作

# Add changes to index
$ git add --all .

# Commit changes
$ git commit # and provide commit comment

准备拉取请求,创建此分支,以便我们可以在压缩之前保留我们的提交,以防拉取请求被拒绝,或者出于任何原因。

# Branch the topic branch for a pull request
$ git branch <topic branch>-pr 

# Checkout the topic branch
$ git checkout  <topic branch>-pr

# Rebase to squash commits
$ git rebase -i  # Rebase and provide a commit message
                 # for all of the commits that are squashed

# Something like the following is shown
pick 1fc6c95 do something  
pick 6b2481b do something else  
pick dd1475d changed some things  
pick c619268 fixing typos  

# Change the word pick to squash for all but the first line, for example:

pick 1fc6c95 do something  
squash 6b2481b do something else  
squash dd1475d changed some things  
squash c619268 fixing typos  

- &GT;就此而言,我遇到了问题。我似乎无法进行一次提交。在这个分支中总是至少有两个提交,我已经看到了使用--root的选项,但是当我这样做时,bitbucket抱怨我的pull请求分支和上游分支是无关的,我不能发出pull请求

# Push branch to origin
$ git push origin <topic-branch>-pr 

我觉得我非常接近工作流程,所以我们将非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您正在正确地执行此操作,结帐:https://github.com/ginatrapani/todo.txt-android/wiki/Squash-All-Commits-Related-to-a-Single-Issue-into-a-Single-Commit

为了压缩一次提交 - git rebase -i HEAD~4以便重新设置最后4次提交。

另外,如果是新分支,你应该在结账前进行git-fetch或git-pull。在任何工作完成之前没有理由使用rebase,你只能在工作开始后进行改造并提交。

答案 1 :(得分:0)

这最近在Bitbucket上作为点击功能提供。到目前为止,它仅作为labs opt-in提供。启用它后,合并PR时可以选择“Squash”作为“合并策略”。

来源:https://bitbucket.org/repo/LboRq/images/2271370725-squash-merge.png