git 合并 多个commit为一个 删除commit

 

在用git做版本控制器的时候,经常会遇到以下情况:

   1、在做功能的时候,你自己觉得代码没问题了,就本地commit,然后提交代码,测试之后你还有修改的地方,改完之后,本地commit,推到远程。到此功能做完,但是做完之后发现,你的一个功能commit了两次,当然根据实际情况有些时候你为了做一个功能,来回不止两次,这样子的提交会让这个分支看起来有点杂乱。那么你会想要将你的几次commit合并成一个commit后,再提交,那样子分支看上去会非常清爽。

   2、当你做功能的时候,你会遇到需要零时提交的情况(比如你在做A任务,突然来了B任务,在你A任务分支上你会先commit一次,等B任务做完,再回来继续做A,做完之后会再次commit),此时你的一个任务有会有多个commit存在。当然这种情况可以使用stash,pycharm里面有个shelf可以用。

   3、突然发现之前有的commit 写的很啰嗦,又不想回退太多,只想合并之前的commit

    本文的主要目的是教你怎样将git中多次commit合并成一个commit。

(1)

git log看一下当前分支的提交情况,下图中有三个commit点。从先到后是:fix pylint 1, fix flake8 2, fix pep8 3。需求是:把fix pylint 1, fix flake8 2, fix pep8 3这3个commit点清除,重新提交。

 首先 使用 git rebase -i 输入tab键,查看提示

我们要接到update git ignore之后,所以我们rebase到这里,输入

git rebase -i HEAD~3

出来一个vim的编辑框,

具体的操作下面的 Commands 说明得很清楚了,

具体可查看git文档:https://git-scm.com/docs/git-rebase

pick就是不变

reword就是修改commit注释

对于 commit 合并可以使用 squash、fixup 指令,

区别是 squash 会将该 commit 的注释添加到上一个 commit 注释中,

fixup 是放弃当前 commit 的注释;

drop 就是删掉这个commit

然后我们将3个 pick 改为drop ,保存退出。

之后再次查看git log。

最近的都drop掉了,此刻,我们就可以重新修改并提交一个新的commit了。


当然如果想查看当前commit 之后的可以输入

git reflog

git reset --hard dd06add 回滚 到之前的就回来了

哈哈 我胡汉三又回来了。

(2)

git log看一下当前分支的提交情况,下图中有三个commit点。从先到后是:fix pylint 1, fix flake8 2, fix pep8 3。需求是:把fix pylint 1, fix flake8 2, fix pep8 3这3个commit点合成一个,重新提交。

依旧是

git rebase -i HEAD~3

然后改成这样

 

再次查看git log

完美

然后

git push -f  

完成

(3)

git log看一下当前分支的提交情况,有两个commit message 都是export data use pandas | xlrd xlwt 。需求是:把export data use pandas | xlrd xlwt这2个commit点合成一个,重新提交。

 那我们现在就要 rebase 到 josephus 这个commit message上

 然后出现

我们把第二个的pick 改为 squash,使用这个commit 但使用前一个的commit message

改为这样

然后会提示你将两个commit和为一个commit的时候写哪些commit message

 删掉留一个就好了

 我们再次查看git log

 两次commit 已经合成一个commit了 ,而且合成为一个commit message。

大功告成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天马行空波

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值