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

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

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


当前回答

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

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

其他回答

假设您在feature/task1中使用了多个提交。

转到项目分支(project/my_project)git签出项目/my_project创建新分支(feature/task1_bugfix)git checkout-b feature/task1_bugfix使用--squash选项合并git merge--挤压功能/task1创建单个提交gitcommit-am“添加单个注释”推你的树枝git push—设置上游原点功能/task1_bugfix

git checkout YOUR_RELEASE_BRANCH
git pull
git checkout -b A_NEW_BRANCH
git merge --squash YOUR_BRANCH_WITH_MULTIPLE_COMMITS
git commit -am "squashing all commits into one"
git push --set-upstream origin A_NEW_BRANCH

如果您已经在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]

您希望与挤压选项合并。这是如果你想一次做一个分支。

git merge --squash feature1

如果您希望在单个提交的同时合并所有分支,那么首先以交互方式重新设置基础并压缩每个功能,然后章鱼合并:

git checkout feature1
git rebase -i master

挤压成一个提交,然后重复其他功能。

git checkout master
git merge feature1 feature2 feature3 ...

最后一次合并是“章鱼合并”,因为它同时合并了许多分支。