首页 > 解决方案 > Bitbucket - 所有提交的单次提交

问题描述

我目前正在BitBucket用作我的项目的版本控制。我在多个提交上看到不同node (In the image with black dots/multiple commits)的。Branch graph我如何确保我所做one node的所有提交只出现在分支图上?换句话说,所有人都commits必须被视为1 commitnot incremental

1

我试过使用git commit --amend -m "Message",但它总是给我

error: failed to push some refs hint:'git pull' before pushing again

所以我一次git pull又一次push地创建了一个新的提交。

标签: bitbucketcommitgit-branchgit-amend

解决方案


您要求做的事情是完全合理的;我也喜欢这样做。我可以继续在我的分支上提交,然后当我准备好推送时,我将它们全部压缩为一个提交,然后推送。所以看到我的公关的人把它看作是一个单一的成品;他们不需要看到我如何到达那里的整个历史。

将链中的所有提交压缩为单个提交的一种方法是将软重置回第一个提交,然后修改该提交。看我的三种遗憾;这是遗憾类型 1。

但是,总的来说,我喜欢为此使用交互式变基。这是一个例子。我们正在一个分支上工作mybranch,我们做了三个提交:

* cd591cc (HEAD -> mybranch) z
* cdbe774 y
* 3ce8eaa x
| * e86283a (master) b
|/  
* 4227e7d a

现在我想推动,以便我们可以合并到master. 但我不想要三个提交xyand z。我只想要一个提交。

所以我说:

git rebase -i 4227e7d

(因为那是分支开始的地方)。编辑器打开,我看到了:

pick 3ce8eaa x
pick cdbe774 y
pick cd591cc z

我这样重写它:

pick 3ce8eaa x
squash cdbe774 y
squash cd591cc z

我保存并关闭编辑器。编辑器再次打开,所以我可以写我的提交信息。我删除编辑器中的所有内容并将其替换为:

my very cool work

我保存并关闭编辑器。现在事情看起来像这样:

* bb8c9fb (HEAD -> mybranch) my very cool work
| * e86283a (master) b
|/  
* 4227e7d a

正是我想要的!我的分支只是一个提交,现在我准备好合并(或推送拉取请求)。


推荐阅读