1、假设当前修改了两个问题,分别提交。git log
如下:
$ git log
commit 4d61cd784d1cd498b2a30bc48fcc588a225b15c0
Author: wulan
Date: Wed Jul 6 17:16:24 2022 +0800
[2] add 2.txt
commit c2b68eb05d5ea3ad73ec8eb34d0826e53cf07fde
Author: wulan
Date: Wed Jul 6 17:16:04 2022 +0800
[1] add 1.txt
2、现在发现第一个问题修改不够,继续补充修改。git log
如下:
$ git log
commit de57ca0934d9d34f7d2e3e24aedee11788462fc9 (HEAD -> release)
Author: wulan
Date: Wed Jul 6 17:18:25 2022 +0800
[1] modify 1.txt
commit 4d61cd784d1cd498b2a30bc48fcc588a225b15c0
Author: wulan
Date: Wed Jul 6 17:16:24 2022 +0800
[2] add 2.txt
commit c2b68eb05d5ea3ad73ec8eb34d0826e53cf07fde
Author: wulan
Date: Wed Jul 6 17:16:04 2022 +0800
[1] add 1.txt
3、通过git rebase 调整。
**
交换
**
如果想交换两个commit的位置:
输入 git rebase - i
如下:
pick c2b68eb0 [1] add 1.txt
pick 4d61cd78 [2] add 2.txt
pick de57ca09 [1] modify 1.txt
# Rebase 2fc05ac4..de57ca09 onto 2fc05ac4 (3 commands)
...
光标放到第二行,输入 ddp
(vim中快速交换两行的方式,光标所在行跟下面一行进行交换)。
然后输入 shift + ;
接着 wq
保存。再次输入 git log
查询:
commit 02854eb00426bfcd58330575699995e678b552ad (HEAD -> release)
Author: wulan
Date: Wed Jul 6 17:16:24 2022 +0800
[2] add 2.txt
commit e7128d8910825c8dfaa3f30e6e06bad402d485e8
Author: wulan
Date: Wed Jul 6 17:18:25 2022 +0800
[1] modify 1.txt
commit c2b68eb05d5ea3ad73ec8eb34d0826e53cf07fde
Author: wulan
Date: Wed Jul 6 17:16:04 2022 +0800
[1] add 1.txt
发现commit号已经交换了。也可以直接编辑自主调整顺序,不使用ddp。
**
合并
**
如果不想交换,想要将最新修改的commit合并到[1]
中,使用 git commit --amend
是不行的,会合并到最近一次commit [2]
,满足不了需求,这种情况 也可以使用git rebase。
输入 git rebase - i
如下:(复原了上一步骤)
pick c2b68eb0 [1] add 1.txt
pick 4d61cd78 [2] add 2.txt
pick de57ca09 [1] modify 1.txt
# Rebase 2fc05ac4..de57ca09 onto 2fc05ac4 (3 commands)
...
修改为如下:(pick可以简写为p squash可以简写为s)
pick c2b68eb0 [1] add 1.txt
squash de57ca09 [1] modify 1.txt
pick 4d61cd78 [2] add 2.txt
squash可以将当前commit与上一个commit合并。
然后输入 shift + ;
接着 wq
保存,会弹出commit 信息编辑界面,因为两次commit的commit信息不同,合并后需要重新编辑。
# This is a combination of 2 commits.
# This is the 1st commit message:
[1] add 1.txt
# This is the commit message #2:
[1] modify 1.txt
# Please enter the commit message for your changes. Lines starting
...
修改为:
[1] add 1.txt and modify 1.txt
# Please enter the commit message for your changes. Lines starting
...
然后输入 shift + ;
接着 wq
保存。再次输入 git log
查询:
commit 55c67ccb21d2713ceea51b6949a426b46ae0b611 (HEAD -> release)
Author: wulan
Date: Wed Jul 6 17:16:24 2022 +0800
[2] add 2.txt
commit 64907d7200155886c2a80db8b0cd250b06540562
Author: wulan
Date: Wed Jul 6 17:16:04 2022 +0800
[1] add 1.txt and modify 1.txt
可以看到已经合并了。
这样即使在完成第二个commit的功能后,又发现第一个commit的修改没有修改完全,也可以补充过去,让你的代码git log更清晰。