我有一个远程Git服务器,下面是我要执行的场景:
对于每个bug/功能,我创建一个不同的Git分支我继续在Git分支中提交我的代码,并发送非官方Git消息在顶级存储库中,我们必须使用官方Git消息对一个bug进行一次提交
那么,我如何将我的分支合并到远程分支,以便他们对我的所有签入仅进行一次提交(我甚至想为此提供提交消息)?
我有一个远程Git服务器,下面是我要执行的场景:
对于每个bug/功能,我创建一个不同的Git分支我继续在Git分支中提交我的代码,并发送非官方Git消息在顶级存储库中,我们必须使用官方Git消息对一个bug进行一次提交
那么,我如何将我的分支合并到远程分支,以便他们对我的所有签入仅进行一次提交(我甚至想为此提供提交消息)?
当前回答
假设您在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
现在,该分支将只有一个提交,其中包含所有更改。
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
这里的原点可以是您喜欢的其他远程。
如果您收到错误:提交是不可能的,因为您有未合并的文件。
git checkout master
git merge --squash bugfix
git add .
git commit -m "Message"
修复了所有冲突文件
git add .
你也可以使用
git add [filename]
我知道这个问题不是专门针对Github的,但由于Github被广泛使用,这是我一直在寻找的答案,我将在这里分享。
Github能够执行压缩合并,这取决于为存储库启用的合并选项。
如果启用了挤压合并,“挤压并合并”选项将出现在“合并”按钮下的下拉列表中。
假设您在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