Warm tip: This article is reproduced from serverfault.com, please click

Bitbucket-所有提交的一次提交

(Bitbucket - Single commit for all the commit's)

发布于 2020-12-03 20:08:45

我目前正在将其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 pullpush这再次创造了新的承诺。

Questioner
Paritosh M
Viewed
11
matt 2020-12-06 01:18:13

你要执行的操作是完全合理的;我也喜欢这样做。我可以继续在分支上进行提交,然后在准备进行推送时,将它们全部压缩为一次commit并进行推送。因此,看到我的PR的人们将其视为单个成品。他们不需要查看我到达那里的全部历史。

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

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

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

现在我要推送,以便我们可以合并到master但是我不希望三个提交xyz我只想提交一次。

所以我说:

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

正是我想要的!我的分支只是一次提交,现在我可以合并了(或为拉取请求而推送)。