0%

Git-Merge-Commit

工作中可能出现一个bug修复多次调教或者开发过程中需要临时保存代码到分支上的操作。但是合并主分支的时候不希望把过多的提交记录信息展示出来。这里就需要用到git rebase 命名。

案例

使用git rebase 合并多条commit

  1. 查看git log 选择要合并的记录
1
git log --oneline

2.选中一个commit id作为合并到对象,从上至下按照最新提交的记录排序。这里可以选中第三条记录。

1
git rebase -i 7893ade

  • 这里会显示可以合并的记录还有git的命令帮助信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 命令:
# p, pick <提交> = 使用提交
# r, reword <提交> = 使用提交,但修改提交说明
# e, edit <提交> = 使用提交,进入 shell 以便进行提交修补
# s, squash <提交> = 使用提交,但融合到前一个提交
# f, fixup <提交> = 类似于 "squash",但丢弃提交说明日志
# x, exec <命令> = 使用 shell 运行命令(此行剩余部分)
# b, break = 在此处停止(使用 'git rebase --continue' 继续变基)
# d, drop <提交> = 删除提交
# l, label <label> = 为当前 HEAD 打上标记
# t, reset <label> = 重置 HEAD 到该标记
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# . 创建一个合并提交,并使用原始的合并提交说明(如果没有指定
# . 原始提交,使用注释部分的 oneline 作为提交说明)。使用
# . -c <提交> 可以编辑提交说明。
#
# 可以对这些行重新排序,将从上至下执行。
#
# 如果您在这里删除一行,对应的提交将会丢失。
#
# 然而,如果您删除全部内容,变基操作将会终止。
#
  • 这里将要合并的commit 前缀pick 改成 s 或者 squash 就可以开始合并了。这里使用vim :wq保存
1
2
3
pick a755a10 完善单元测试
s d3f1272 完善代码
s 547947e
  • 正常情况下,不回创建临时空间。直接将代码推送到需要存储分支就可以了。这里不直接推送主分支,建议合并过去。
1
git push -f origin branch
  • 不正常的情况,一般是合并冲突,只需要将合并解决掉, 在将合并的文件添加暂存区,在使用git rebase –continue。或者直接放弃git rebase –abort 或者直接切换到其他分支,然后删除刚才操作的文件退回rm -rf .git/rebase-merge
  • 检查git log --oneline