我有一个远程Git服务器,下面是我要执行的场景:
对于每个bug/功能,我创建一个不同的Git分支我继续在Git分支中提交我的代码,并发送非官方Git消息在顶级存储库中,我们必须使用官方Git消息对一个bug进行一次提交
那么,我如何将我的分支合并到远程分支,以便他们对我的所有签入仅进行一次提交(我甚至想为此提供提交消息)?
我有一个远程Git服务器,下面是我要执行的场景:
对于每个bug/功能,我创建一个不同的Git分支我继续在Git分支中提交我的代码,并发送非官方Git消息在顶级存储库中,我们必须使用官方Git消息对一个bug进行一次提交
那么,我如何将我的分支合并到远程分支,以便他们对我的所有签入仅进行一次提交(我甚至想为此提供提交消息)?
当前回答
您的功能分支已完成并准备好只需一次提交即可提交到主分支、开发分支或其他目标分支
转到合并分支:git checkout master和git pull从干净的本地主机创建一个工作分支:gitcheckout-b workMerge在工作时挤压你的功能分支:git Merge--挤压你的_feature_branch。使用默认或新消息提交:gitcommit(使用特定或默认消息)返回功能分支:git checkout your_feature_branch将功能分支指向工作目录:git reset-hardwork验证,但您已准备好推送:git push-f如果需要,清理工作分支
用目标分支替换master:开发等等
无需指定从主节点到功能分支的提交次数。Git负责*
其他回答
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
假设您在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
假设您进行多次提交的分支的名称称为bugfix/123,并且您希望压缩这些提交。首先,从develop创建一个新分支(或者无论回购的名称是什么)。假设新分支的名称为bugfix/123_up。在gitbash中签出此分支-
git获取git checkout错误修复/123-upgitmerge错误修复/123--挤压gitcommit-m“您的消息”git推送原点错误修复/123-up
现在,该分支将只有一个提交,其中包含所有更改。
您希望与挤压选项合并。这是如果你想一次做一个分支。
git merge --squash feature1
如果您希望在单个提交的同时合并所有分支,那么首先以交互方式重新设置基础并压缩每个功能,然后章鱼合并:
git checkout feature1
git rebase -i master
挤压成一个提交,然后重复其他功能。
git checkout master
git merge feature1 feature2 feature3 ...
最后一次合并是“章鱼合并”,因为它同时合并了许多分支。