一般我们使用git来开发都会有2个仓库:本地仓库和远程仓库
在我们本地修改代码后,会首先commit到本地的仓库里
当最终本地代码测试没问题后,才会用git push命令提交到远程仓库中

如果用默认的直接push,会把本地的所有的commit日志都会给push到远程
有时我们本地的很多commit信息都没有太大意义
只想往远程push一条commit信息
那么可以使用下面的命令:

git rebase -i origin/master



它允许你在push到远程之前来编辑自己的commit信息:


pick 9135aeb v2
pick c0ef644 v3

# Rebase 036a847..c0ef644 onto 036a847
#
# Commands:
#  p, pick = use commit
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.



如上,本地有两条commit信息v2和v3
我们可以直接把v3对应的pick给修改成squash


pick 9135aeb v2
squash c0ef644 v3



这样我们就可以合并这2个commit信息到一条上了
然后,我们再执行下面的push就可以了

git push



rebase中的edit命令代表是rebase到对应的commit后停止
然后等待修改对应的文件后,再使用

git rebase --continue


来继续rebase的操作

另外:在rebase -i 时也可以直接删除对应行的commit信息
但这样做就会丢失那次commit所作的修改
所以,使用这个需要慎重