如何使用git merge

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

  • 对于每个错误/功能,我创建了一个不同的Git分支

  • 我继续在Git分支中使用非官方的Git消息提交我的代码

  • 在最上面的版本库中,我们必须为官方Git消息中的一个bug做一次提交

  • 那么我怎样才能将我的分支合并到远程分支中,这样他们只需要为我的所有签入提交一个提交(我甚至想为此提供提交消息)?


    说你的bug修复分支叫做bugfix并且你想把它合并到master

    git checkout master
    git merge --squash bugfix
    git commit
    

    这将从bugfix分支中提取所有提交,将它们bugfix到1次提交中,并将其与master分支合并。


    说明

    git checkout master
    

    切换到您的master分支。

    git merge --squash bugfix
    

    bugfix分支中提交所有提交并将其与当前分支合并。

    git commit
    

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

    省略-m参数可让您在完成提交之前修改草稿提交消息,其中包含来自压缩提交的每条消息。


    您想要与压扁选项合并。 那就是如果你想一次只做一个分支。

    git merge --squash feature1
    

    如果你想在同一时间合并所有分支作为单个提交,那么首先交互化并压缩每个特征然后合并八爪鱼:

    git checkout feature1
    git rebase -i master
    

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

    git checkout master
    git merge feature1 feature2 feature3 ...
    

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

    希望这可以帮助


    终于为我解决这个问题的评论显示:

    git checkout main
    git merge --squash feature
    

    相当于做:

    git checkout feature
    git diff main > feature.patch
    git checkout main
    patch -p1 < feature.patch
    git add .
    

    当我想合并功能分支与105(!!)提交并将它们全部压缩到一个时,我不想git rebase -i origin/master因为我需要分别解决每个中间提交的合并冲突(或者至少是git自己弄不清楚的)。 使用git merge --squash可以让我得到我想要的结果,即合并整个功能分支的单个提交。 而且,我最多只需要执行一次手动冲突解决方案。

    链接地址: http://www.djcxy.com/p/667.html

    上一篇: How to use git merge

    下一篇: How can I know in git if a branch has been already merged into master?