这里写自定义目录标题
Git使用reset命令合并commit
开发的时候发现,在自己的分支开发完成后,合并到master分支中,会保留很多master主分支并不需要关心的commit历史记录,这会导致master主分支越来越不干净。而使用reset命令可以解决这一问题。
1 场景
现在master主分支的commit历史比较干净,只有一条。
现在开发了feature/day分支,按照不做处理的方式合并到master分支,会在master分支看到看到下图一样的提交历史。
master分支并不需要关心feature/day分支中的commit细节,如果feature/day分支开发时间较长,或则BUG修复次数较多,那势必产生大量的commit记录。
2 reset命令
git reset <commit_id>
reset命令可以重置当前HEAD的指向。
直接现在在新开发的分支feature/night中来使用吧,同理feature/night也有多次提交。
(1)在合并到master分支前,执行一下下面的命令。
git reset 66f09c5
66f09c5是night分支创建前一次commit,使用reset会让在feature/night分支上所有的提交回滚到工作区(未add)。
(2)此时重新进行一次提交,再强制push回分支,则可以刷新提交历史。
git add .
git commit -m '压缩night分支commit历史'
git push -f origin feature/night
再看看在feature/night分支的commit历史:
现在feature/night分支只有一条commit历史了!
3 参数
reset命令还有两个比较常用的参数:
- –soft:回退后,保留修改到暂存区(已add,未commit)。
- –mixed(默认):回退后,保留修改到工作区(未add,未commit)。
- –hard:强制回退,并丢弃所有中间提交,谨慎使用。
4 总结
合并commit只是reset命令的一个应用场景,另外的还有:
-
合并多条commit内容(本例)。
-
上一次commit的内容写错了,需要回退进行修改。
-
回退版本,丢弃代码。