git(五 合并提交命令)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git(五 合并提交命令)相关的知识,希望对你有一定的参考价值。

参考技术A

场景 :本地做了四次提交,想把第 2、3、4 次提交合并,只保留第二次提交的commit message

解决方案
1、git reflog 查看所有的提交记录

p.s. git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作);git log 命令可以显示所有提交过的版本信息,看不到删除的记录。所以买后悔药回退删除记录的时候,可以用 git reflog

上面的图片展示了,一共四次提交,按照时间倒序排列分别是 第 4、3、2、1次提交
2、git rebase -i “最新的一个想保留的 Commit”
意思是,我想合并2、3、4,那么最新一个想保留的 commit 就是 第一次 commit,他的hash值为 ae9c811,输入下列命令并回车

或者

3、选择要合并的 commit :上述步骤完成后会跳出下图界面
注意这个时候的顺序:最近一次提交在最下面

前面三行是我们需要操作的三个 Commit,每行最前面的是对该 Commit 操作的 Command。关于每个 Command 具体做什么,下面的注释写得非常清楚。为了完成我们的需求,我们可以关注到这两个命令:

我们可以选择把第 3、4 次的commit message合并到第二次上面,修改command如下,并保存退出:

4、编辑合并 commit 的 commit message
上述步骤完成后,会跳出如下界面

5、检查:使用git log检查

结果如下:

注意,使用git reflog仍可以查看最初的命令:

两者的区别在于,git log只显示保留的,git reflog可以显示 reset 和 rebase、删除的版本

编译器的可视化git工具中的展示:

这个时候再push,提交记录上就非常好看了
请注意

Git 常用命令

合并分支featureB到当前分支, 压缩其更改集, 并延迟提交

git merge --no-commit --squash featureB

--squash 选项接受被合并的分支上的所有工作,并将其压缩至一个变更集,使仓库变成一个真正的合并发生的状态,而不会真的生成一个合并提交。 这意味着你的未来的提交将会只有一个父提交,并允许你引入另一个分支的所有改动,然后在记录一个新提交前做更多的改动。 同样 --no-commit 选项在默认合并过程中可以用来延迟生成合并提交

以上是关于git(五 合并提交命令)的主要内容,如果未能解决你的问题,请参考以下文章

如何修改git已经提交的信息及合并多次提交

git rebase -i 合并多次提交

git合并其中一个提交

git 怎么提交合并分支的部分代码

Git不同项目代码分支合并,且仅合并特定提交

获取合并提交的git diff输出结果