git merge -h

用法:git merge [<选项>] [<提交>...]
  或:git merge --abort
  或:git merge --continue

    -n                    在合并的最后不显示差异统计
    --stat                在合并的最后显示差异统计
    --summary             (和 --stat 同义)
    --log[=<n>]           在合并提交信息中添加(最多 <n> 条)精简提交记录
    --squash              创建一个单独的提交而不是做一次合并
    --commit              如果合并成功,执行一次提交(默认)
    -e, --edit            在提交前编辑提交说明
    --ff                  允许快进(默认)
    --ff-only             如果不能快进就放弃合并
    --rerere-autoupdate   如果可能,重用冲突解决更新索引
    --verify-signatures   验证指定的提交是否包含一个有效的 GPG 签名
    -s, --strategy <策略>
                          要使用的合并策略
    -X, --strategy-option <option=value>
                          所选的合并策略的选项
    -m, --message <说明>  合并的提交说明(针对非快进式合并)
    -F, --file <路径>     从文件中读取提交说明
    -v, --verbose         更加详细
    -q, --quiet           更加安静
    --abort               放弃当前正在进行的合并
    --continue            继续当前正在进行的合并
    --allow-unrelated-histories
                          允许合并不相关的历史
    --progress            强制显示进度报告
    -S, --gpg-sign[=<key-id>]
                          GPG 提交签名
    --overwrite-ignore    更新忽略的文件(默认)
    --signoff             添加 Signed-off-by: 签名
    --verify              校验 commit-msg 钩子


--ff  快速合并,这个是默认的参数。如果合并过程出现冲突,Git会显示出冲突并等待手动解决
--ff-only  只有能快速合并的情况才合并。如果合并过程出现冲突,Git会自动abort此次merge
--no-ff  不使用快速合并。会生成一次新的提交记录,这个记录只是标识在这里进行了一次merge操作(目前还没想到应用场景)
--squash  创建一个单独的提交而不是做一次合并

master:M1 <- M2
dev   :M3 <- M4

# 把dev分支快速合并到master主分支
git checkout master
git merge --ff dev

master:M1 <- M2 <- M3 <- M4
dev   :M1 <- M2 <- M3 <- M4

# 把dev分支快速合并到master主分支,有冲突自动放弃合并
git checkout master
git merge --ff-only dev

master:M1 <- M2
dev   :M3 <- M4

master:M1 <- M2 <- M3 <- M4
dev   :M1 <- M2 <- M3 <- M4

# 不使用快速合并,生成一次新的提交记录
git checkout master
git merge --no-ff dev

master:M1 <- M2 <- M3 <- M4 <- M5(Merge branch 'dev')
dev   :M1 <- M2 <- M3 <- M4

# 创建一个单独的提交而不是做一次合并
git checkout master
git merge --squash dev

master:M1 <- M2 <- M5(Merge branch 'dev')
dev   :M1 <- M2 <- M3 <- M4

这里的M5其实是M3和M4的合并,适合只想合并dev的内容不合并它的提交记录。

# 把dev-2.2.3-R0704强制合并到当前分支

git merge --no-ff -X theirs dev-2.2.3-R0704

# 远程dev分支本地回退并修改后推送服务器

git push origin dev --force  (有风险,需沟通好是否有别的提交)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐