在项目开发时,每天会提交大量的代码,也会有很多 commit 记录,那么要不要处理这些 commit 记录。
当然不处理这些 commit 记录也能进行代码合并,就是记录有点多,并且每个 commit 可能获知的信息不那么全,如果合并一下这些 commit 并添加一些这些 commit 的总的概览,这样看起来 commit 记录也少了很多,并且都是有用的提交记录。
git log: 查看提交历史
上述有五个 commit 记录。如果我想合并四个 commit 记录:
git rebase -i head~4 合并前面四个 commit 记录
也可以指定合并某个版本之前的版本:git rebase -i 3a4226b 但不包含 3a4226b,至合并他之前的。
执行了 rebase 之后会弹出一个窗口,让你选择合并哪些 commit 记录
pick 3ca6ec3 '注释**********'
pick 1b40566 '注释*********'
pick 53f244a '注释**********'
需要把 pick 改为 s 或 squash,需要留第一个,第一个不要改,意思是下面的 commit 记录都合并到第一个上面去。
pick 3ca6ec3 '注释**********'
s 1b40566 '注释*********'
s 53f244a '注释**********'
保存退出,按下 esc 再按 :然后输入 wq 或 x 保存
如果有冲突,可以先解决冲突,解决完之后执行:
git add .
git rebase --continue
如果不想执行或者想放弃的话可以执行:
git rebase --abort
如果没有冲突,或者冲突已经解决,会弹出窗口,让你注释掉一些提交记录,这里是让我们编辑自己合并的这些记录的概览,如:完成了什么功能,按照实际情况填写。
# this is a combination of 4 commits.
# 写上合并的这些 commit 做了什么事,如:
完成了 api 的编写:
1. 完成了用户相关的 api 编写
2. 完成了用户列表相关 api 编写
# 下面的都注释
# the first commit’s message is:
# 注释......
# the 2nd commit’s message is:
# 注释......
# the 3rd commit’s message is:
# 注释......
# please enter the commit message for your changes. lines starting # with ‘#’ will be ignored, and an empty message aborts the commit.
保存退出,按下 esc 再按 :然后输入 wq 或 x 保存
如图:有 successfully rebased and updated 字样就代表合并成功了
上述操作完成之后可以执行 git log 看看记录。
原来五条,合并了前面四条,还有两条。
如何提交?
合并之后由于 commit 记录发生了变基,需要使用 -f 关键字提交,由于我们都是在自己分支开发,不会覆盖其他人提交的记录,如果在主分支请谨慎使用 -f 提交,因为会覆盖别人的代码。