我正在尝试使用一个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抱怨我的pull请求分支和上游分支是无关的,我不能发出pull请求 .
# Push branch to origin
$ git push origin <topic-branch>-pr
我觉得我离工作过程非常接近,所以任何帮助都会非常感激 .
2 回答
你做得很好,结帐: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,你只会在工作开始后进行重新设定并进行提交 .
这最近在Bitbucket上作为点击式功能提供 . 到目前为止,它仅作为labs opt-in提供 . 启用后,合并PR时可以选择"Squash"作为"Merge strategy" .
资料来源:https://bitbucket.org/repo/LboRq/images/2271370725-squash-merge.png