存在 dev 开发分支 以及 master 主分支,dev 分支开发完成后,合并 master 分支的时候,会把 dev 上混乱的 commit 提交记录都带过去了。
请问 dev 分支 合并到 master 分支的时候,能不能只保留最新的 commit 记录 或者只创建一个 新的提交记录?
求大大指教 T_T
存在 dev 开发分支 以及 master 主分支,dev 分支开发完成后,合并 master 分支的时候,会把 dev 上混乱的 commit 提交记录都带过去了。
请问 dev 分支 合并到 master 分支的时候,能不能只保留最新的 commit 记录 或者只创建一个 新的提交记录?
求大大指教 T_T
rebase
整理好dev后在合并到master
rebase先处理代码,完毕后会让你整理comments,所有历史提交的comments列出来,你把不想要的在行首用#注释掉就没了,也可以全部删了重新写。
可以啊,你先reset
(git默认的reset操作为soft
,只回滚commit记录,不回滚代码,所以你不用担心git reset会把你的代码回滚掉。如果你需要回滚代码,请用git reset --hard),重新commit
,就可以合并成一条commit
记录,然后merge
5 回答2.9k 阅读
3 回答2.7k 阅读
3 回答997 阅读
426 阅读
当然可以,这个也是比较常见的问题,所以git中有对应的操作——压缩提交。就像楼主所说的那样,你在dev分支的提交信息很乱或者很不合理,这时候你很想把它们压缩成一次提交。下面有两种方法,第一种方法简单而且好理解。
方法一:使用重置命令
reset
命令可以做一些有趣的事情,压缩提交就是其中一个。首先,你应该可以找到dev分支上的第一次提交,然后获取到它的提交哈希值,然后使用下面的命令:
当然,如果你想压缩的提交并不多,例如只有三个的话,可以使用相对位置
HEAD~3
。然后提交即可,在提交信息中,你可以重新整理你的提交信息,这样就把dev上的所有提交压缩为一次提交。
具体原理可以参考Pro Git一书,如果需要,我可以在这里做详细的解释。
方法二:使用变基命令
由于变基命令很多人并不熟悉,而且相对重置命令也更不好理解,所以这里只作为备选方案。但是你要知道变基命令不止可以压缩提交,也可以改变提交历史。
同样,你需要获取dev分支的第一次提交的哈希值。
运行
git rebase
命令,并指定-i
选项:然后git就会打开一个脚本文件,类似与下面这样:
接着,你需要根据自己的需要修改脚本,注释中已经注明命令的用法。由于我们需要压缩所有提交到第一次提交,因此我们需要将脚本改为如下所示的内容:
稍加思考,你应该可以理解其中的道理。
修改完后,保存退出,这时git会给你重新编辑这次提交信息的机会,如果需要你可以更改提交信息: