likes
comments
collection
share

GitBash教程 使用 git rebase合并commit

作者站长头像
站长
· 阅读数 30

事情是这样的。我写了个笔记,每日频繁提交。今天一看,好家伙居然这么多提交记录,所以想精简一下。比如把“看完4.1”“看完4.2”等等合并成“看完第四章。”

现在来合并一下这两个:

GitBash教程 使用 git rebase合并commit

现在对其进行修改。

1. 查看提交信息

使用git log可以查看当前仓库的所有提交信息。

没什么用,就是告诉你能看。

2. 修改提交信息

  • git rebase -i HEAD~n

    是按照时间顺序由近到远显示最近提交的n条commit。 比如git rebase -i HEAD~3 会进入vim模式,英文状态下输入:q即可退出。

    GitBash教程 使用 git rebase合并commit

    因为我要合并的信息是最开始的两条。所以用这个命令肯定是看不到最开头的那两条。

  • git rebase -i --root 这个是从远到近列出所有的commit信息。

    GitBash教程 使用 git rebase合并commit

接下来我们进行修改。

看一下提示信息:

Commands:

  • p, pick = use commit
  • e, edit = use commit, but stop for amending
  • s, squash = use commit, but meld into previous commit
  • f, fixup [-C | -c] = like "squash" but keep only the previous commit's log message, unless -C is used, in which case keep only this commit's message; -c is same as -C but opens the editor
  • pick就是默认采用这个commit,不用管他
  • edit就是对这条进行修改
  • s就是合并
  • f也是合并,但是只保留最前边的commit信息。如果加上-c那只保留最新的commit信息

所以说合并可以用-s或者-f

squash

说一下squash的原理,是把修改为s的commit合并到他之前的commit中。比如:

GitBash教程 使用 git rebase合并commit

现在来试一下。在英文输入的状态下按i进入编辑模式,把pick修改为s。修改完毕之后Esc退出编辑模式。 再按:,输入wq保存修改并退出文件。

然后你就会进入合并之后的commit文件,它会显示合并之后的内容,第一条commit,第二条commit。

GitBash教程 使用 git rebase合并commit

当然你也可以对内容进行修改。我现在只保留第一条的commit。修改完毕之后也是Esc退出编辑模式。输入:wq。

GitBash教程 使用 git rebase合并commit

修改完毕之后 git push origin master -f

GitBash教程 使用 git rebase合并commit

现在看一下,已经合并成功了。

fixup

fixup的原理是合并好几个commit,但是只保留一个commit的信息。

如果你用f,那最后所有的信息都会合并到前一个commit,并且保存最远的那个commit。

如图,将4.3、4.6、5前边都改为f,那他们三个最终会合并到3里边。 GitBash教程 使用 git rebase合并commit

看看结果,合并之后只剩下3 的commit。 GitBash教程 使用 git rebase合并commit

如果将f改为f -c,还是会合并到前一个commit,但是会保存最近的commit信息。

上面的结果就不是3了,而是5。


修改完后记得 git push origin master -f

转载自:https://juejin.cn/post/7032919336247361544
评论
请登录