git merge
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 (有风险,需沟通好是否有别的提交)
更多推荐
所有评论(0)