在实际开发过程中,我们可能会每开发一些代码就会把这些代码进行提交,以防止一些意外;但是随着提交的 commits 数越来越多,一方面维护起来不便,另一方面可能会造成版本控制的混乱,为了解决这个问题,我们可以把多个 commit 合并成一个。
比如下面这个 MR 一共提交了两次:
为了方便管理,我们需要把这两个提交合并到一起。git 给我们提供了 rebase 命令来实现这个目的。操作步骤如下:
我们使用 git log
命令来查看最新的 git 日志:
我们需要把 88b6aa 和 89d53f 两个合并起来,可以使用下面的命令来实现:
git rebase -i 029e3f
其中 -i
参数的意思就是我们需要合并 -i
参数指定之前的提交,因为这里我们是需要合并 88b6aa 和 89d53f,这两个是在 029e3f 之前。
执行上面的命令会进入下面的界面:
可以看到,最上面的两行其实就是我们要合并的 commits,使用 #
开始的行是 git 自带的注释,主要是用来提示我们。在本文我们主要需要用到 pick
和 squash
这两个命令就可以的,这两个命令的含义上面图片里面已经解释了。
我们现在是需要把第二行的提交(88b6aa)合并到第一行的提交(89d53f)里面,所以可以这么做:
pick 89d53f0cc1 Support Filter/Limit/TopN pushdown for JDBC Connectors squash 88b6aae9b7 Fix code style.
然后输入 :wq
以保存并退出,这时候就会进入下面的界面:
上图中非注释的两行其实就是我们之前两个 commits 的 comment 信息,现在这里我们需要为合并之后的 commit 写一个新的 commet(自己可以根据自己的意愿写),所以可以如下操作:
然后再一次输入 :wq
以保存并退出。退出之后,其实就已经完成了多个 commit 的合并。可以再一次执行 git log
查看:
commit 0ff665ec1d0beb4e59c9979cabd06b9a2d58aedc (HEAD -> jdbc_pushdown) Author: iteblog <hadoop@iteblog.com> Date: Thu Aug 5 18:43:27 2021 +0800 Support Filter/Limit/TopN pushdown for JDBC Connectors commit 029e3fc6dbc9b8ceecc7bd6b881f376ee8f89135 (upstream/master, master) Author: shenh062326 <shenh062326@126.com> Date: Fri Jul 23 10:35:33 2021 +0800 Add queryId to Hive temporary table names commit 3127c281f5359ef2144fbadc5e52dec98aeed4c8
然后我们就可以使用 git push origin jdbc_pushdown -f
命令把修改同步到远程分支。
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Git 合并多个已经提交的 commits】(https://www.iteblog.com/archives/9987.html)