Git使用reset命令合并commit

这里写自定义目录标题

  • Git使用reset命令合并commit
    • 1 场景
    • 2 reset命令
    • 3 参数
    • 4 总结

Git使用reset命令合并commit

开发的时候发现,在自己的分支开发完成后,合并到master分支中,会保留很多master主分支并不需要关心的commit历史记录,这会导致master主分支越来越不干净。而使用reset命令可以解决这一问题。

1 场景

现在master主分支的commit历史比较干净,只有一条。
在这里插入图片描述
现在开发了feature/day分支,按照不做处理的方式合并到master分支,会在master分支看到看到下图一样的提交历史。

Git使用reset命令合并commit_第1张图片

master分支并不需要关心feature/day分支中的commit细节,如果feature/day分支开发时间较长,或则BUG修复次数较多,那势必产生大量的commit记录。

2 reset命令

git reset <commit_id>

reset命令可以重置当前HEAD的指向。

直接现在在新开发的分支feature/night中来使用吧,同理feature/night也有多次提交。

Git使用reset命令合并commit_第2张图片

(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历史:

Git使用reset命令合并commit_第3张图片

现在feature/night分支只有一条commit历史了!

3 参数

reset命令还有两个比较常用的参数:

  • –soft:回退后,保留修改到暂存区(已add,未commit)。
  • –mixed(默认):回退后,保留修改到工作区(未add,未commit)。
  • –hard:强制回退,并丢弃所有中间提交,谨慎使用。

4 总结

合并commit只是reset命令的一个应用场景,另外的还有:

  • 合并多条commit内容(本例)。

  • 上一次commit的内容写错了,需要回退进行修改。

  • 回退版本,丢弃代码。

你可能感兴趣的:(Git,git)