目录
- Git合并多次提交
- 中间可能会出现的情况
- 同步到远程 git 仓库
- Git_合并多次提交记录
- 应用场景
- 总结
Git合并多次提交
有时候需要合并几个提交历史记录为一个提交,该怎么办呢?可以使用git rebase!
也可以使用 git reset –soft 或者 git reset –mixed
将多次commit合并为一次commit,可以通过git rebase命令实现
查看历史,确定要合并的提交
git log 或者 git log –oneline
注意:不要合并了其他人的提交,不要合并了其他人的提交,不要合并了其他人的提交
ATTENTION: Do not merge others' commit! Do not merge others' commit! Do not merge others' commit!
git rebase -i *****
其中*****为不需要合并的提交。其中,-i 的参数是不需要合并的 commit 的 hash 值。
也可以使用相对提交,例如我需要合并最近2次提交可以使用(倒数第三次之后的提交会合并,不合并第三次)
git rebase -i HEAD^^^
下面进入编辑页面,选择合并到哪个提交上
- pick的意思是要执行这个commit
- squash的意识是这个commit会被合并到前一个commit
编辑完保存退出
若无冲突或者冲突已 fix,则会出现一个commit message编辑页面,修改commit message,然后保存退出。Successfully表示操作成功。
中间可能会出现的情况
git 会压缩提交历史,若有冲突,需要进行修改,修改的时候保留最新的历史记录,修改完之后输入以下命令:
git add .
git rebase –continue
若想退出放弃此次压缩,执行命令:
git rebase –abort
同步到远程 git 仓库
输入:git push -f 或者git push –force查看远程仓库效果,多次 commit 已被合并成一次 commit。
Git_合并多次提交记录
使用git rebase将多条提交记录合并成一条
应用场景
公司代码分支在master上,张三接到一个开发任务,需要在master上开发一个新功能,首先张三不能直接使用master分支进行开发,因为张三的开发过程没必要存在于公司主分支master上面,正确的做法是张三新建一个dev分支,张三git merge master获取到master分支上的最新代码,然后张三所有的开发都在这个dev分支上,开发完成后把dev分支上的所有过程打包成一条记录,再推到主分支上。
1、在dev分支上查看已经开发了6条记录了,我们需要把这6条记录合并起来
2、git rebase -i db2c1c847c80ca4943ea04a49ccdf2e95b307b1a
这个是git的默认编辑器(vim)首先点击i进入编辑模式(最下面出现– INSERT –)
把这6条记录的其中五条都屏蔽掉,只保留一个
然后按esc键退出编辑模式,按shift+;进入命令输入模式,输入wq保存退出
3、合并之后的记录使用的commit,同样也是屏蔽5个保留一个
4、当出现Successfully rebased and updated refs/heads/dev.表示合并成功了
5、回到master分支,把dev分支merge到主分支就好了,然后git log检查一下看到就剩一条记录了
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源网。
您可能感兴趣的文章:
- Git创建子分支,合并分支并提交
- git rebase -i合并多次提交的实现
- Git如何修改已提交的commit注释
- Git Commitizen提交规范化自动生成changelog文件