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

本文围绕git版本控制展开,介绍了使用git时会遇到多次commit使分支杂乱的情况,如功能多次修改提交、临时提交等。重点讲解了将git中多次commit合并成一个commit的方法,通过git rebase -i等指令操作,还提及了不同指令的区别及使用场景。

 

在用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。

大功告成!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天马行空波

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

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

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

打赏作者

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

抵扣说明:

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

余额充值