Git如何合并多个commit

知识共享许可协议
本作品自豪的采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

免登陆阅读全文去广告:在这里


正文

在用git做版本控制器的时候,经常会遇到以下情况:

  1. 在做功能的时候,你自己觉得代码没问题了,就提交并推送,老大看完之后,觉得你还有修改的地方,把你的代码打回来重新修改,改完之后,在再提交并推送。到此功能做完,但是做完之后发现,你的一个功能commit了两次
  2. 当你做功能的时候,你会遇到需要零时提交的情况(比如你在做A任务,突然来了B任务,在你A任务分支上你会先commit一次,等B任务做完,再回来继续做A,做完之后会再次commit),此时你的一个任务有会有多个commit存在。
  3. 单纯的移动了一下文件到某个文件夹内

当然根据实际情况有些时候你为了做一个功能,来回不止两次,这样子的提交会让这个分支如图看起来 有(非)点(常) 杂乱。
Git如何合并多个commit_第1张图片
那么你会想要将你的几次commit合并成一个commit后,再提交,那样子分支看上去会非常清爽。

  1. git log看一下当前分支的提交情况,下图中有三个commit点。从先到后是:

    • add 1 line
    • add 2 line
    • add 3 line
  2. 现在,你想把这三个commit合并成一个

  3. 记住我们需要合并的commit点,本次以add 1 line作为节点,在图中的ID为2fc2fe5

  4. 开始合并,敲下面这个命令
    其中,-i 的参数是不需要合并的 commit 的 hash 值,这里指的是第一条 commit

git rebase -i 2fc2fe5
  1. 在默认情况下,此时你会进入编辑模式(Vi),界面显示的是你需要变基(rebase)的节点
    Git如何合并多个commit_第2张图片
    pick 的意思是要会rebase到这个 commit
    squash 的意思是这个 commit 会被合并到前一个commit
    如果有多个commit,将以此类推。
  2. 我们这边需要将"add 3 line"这个commit合并前前一个commit,也就是合并到“add 2 line”的commit中,那就需要修改成如下的:Git如何合并多个commit_第3张图片
  3. 修改保存并退出,来到confirm界面Git如何合并多个commit_第4张图片
  4. 如图,黄字提示我们现在将结合/组合/合并2条commit。依旧是保存并退出。
  5. 现在已经合并成功了,再次查看log,发现commit已经合并了
    Git如何合并多个commit_第5张图片

记得推送哦!

你可能感兴趣的:(Linux)