我有一个远程Git服务器,下面是我要执行的场景:

对于每个bug/功能,我创建一个不同的Git分支我继续在Git分支中提交我的代码,并发送非官方Git消息在顶级存储库中,我们必须使用官方Git消息对一个bug进行一次提交

那么,我如何将我的分支合并到远程分支,以便他们对我的所有签入仅进行一次提交(我甚至想为此提供提交消息)?


当前回答

您可以使用我创建的工具来简化这个过程:git squash。例如,要挤压已从主分支分支的功能分支上的所有提交,请编写:

git squash master
git push --force

其他回答

Use

git status 

检查发生了什么。

Then

git checkout master 
git merge --squash bugfix
git add (add which files you want or use wildcard command like ".")

Then

git commit -m "message"

现在是最后但不是最不重要的

git push -u origin master

这里的原点可以是您喜欢的其他远程。

使用自定义提交将newFeature分支合并到master中:

git merge --squash newFeature && git commit -m 'Your custom commit message';

如果相反,你会

git merge--压缩新功能和git提交

您将得到一条提交消息,其中包含所有newFeature分支提交,您可以自定义这些提交。

我在这里详细解释:https://youtu.be/FQNAIacelT4

如果您已经在main上安装了gitmerge错误修复程序,可以使用以下命令将合并提交压缩为一个:

git reset --soft HEAD^1
git commit

如果您收到错误:提交是不可能的,因为您有未合并的文件。

git checkout master
git merge --squash bugfix
git add .
git commit -m "Message"

修复了所有冲突文件

git add . 

你也可以使用

git add [filename]

假设您的bug修复分支称为bugfix,并且您希望将其合并到master中:

git checkout master
git merge --squash bugfix
git commit

这将从错误修复分支获取所有提交,将它们压缩为一个提交,并将其与主分支合并。


说明:

git checkout master

切换到主分支。

git merge --squash bugfix

从错误修复分支获取所有提交,并将其与当前分支分组为1次提交。(没有出现合并提交;您可以在提交之前手动解决冲突)

git commit

从合并的更改创建单个提交。

省略-m参数可以在完成提交之前修改包含压缩提交中的每个消息的提交消息草稿。