【问题标题】:Squashing Commits to a single commit for a bitbucket pull request对 bitbucket 拉取请求的单个提交进行 Squashing 提交
【发布时间】:2014-11-08 17:23:48
【问题描述】:

我正在尝试开发一个 git flow 版本,该版本可用于一小群开发人员来管理我们的开发过程,大多数员工都是 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  

-> 在这一点上,我遇到了问题。我似乎无法完成一项承诺。在这个分支中总是至少有两个提交,我看到了使用 --root 的选项,但是当我这样做时,bitbucket 抱怨我的拉取请求分支和上游分支不相关,我无法发出拉取请求。

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

我觉得我已经接近了一个工作流程,所以任何帮助将不胜感激。

【问题讨论】:

  • 您遗漏了您在交互式 rebase 期间所做的操作的详细信息
  • 抱歉,我选择了第一个提交并压缩了所有其他提交,相应地更新了问题。
  • 除了 1fc6c95 你还有什么提交?
  • 嗯,这只是问题中的一个例子,尽管它似乎是 1fc6c95 和 rebase 操作本身的新提交。

标签: git bitbucket pull-request rebasing


【解决方案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。没有理由在任何工作完成之前使用变基进行拉动,只有在工作开始并提交后才能变基。

【讨论】:

  • 谢谢,不过希望将其简化为一个提交,包括变基提交。在这种情况下,没有必要在完成任何工作之前执行 git pull --rebase ,但我正在尝试以涵盖任何情况的方式编写文档。这个想法是我不知道结帐前发生了什么。他们可能已经对它进行了检查,检查了另一个分支,然后过一会儿又回来了。无论如何,只是试图确保它们与上游分支保持同步,即使这有时会导致执行不必要的命令。这有意义吗?
  • 事实证明我只是在提交中重新定位太远,并且超出了我自己的提交到以前的历史。我想我现在已经找到了问题所在。感谢所有回复的人。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2018-06-21
    • 2021-03-15
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    相关资源
    最近更新 更多