假设以下是 git 历史记录:
我想要做的是编辑提交 D(重写历史记录)。我使用命令
在
您可以在这里找到示例,您可以尝试使用
我询问的原因是因为我的真实存储库的Git历史记录相当复杂,沿途有很多合并(总共约300个提交),而我需要编辑的提交靠近最初的提交,因此我想保留历史记录(避免压缩),但我不想再次解决所有冲突。
有更好的方法吗?
已在Git for Windows 2.17.1(最新版)上测试。
M (master) <- merge that required resolving a conflict, e.g. coming from F and G
| \
| |
F G
| |
C D <- commit to edit (D), unrelated to the merge conflict (e.g. adding a new file)
| |
| /
B
|
A <- initial commit
我想要做的是编辑提交 D(重写历史记录)。我使用命令
git rebase --interactive --preserve-merges A master
,标记提交D
进行编辑,在重新定位停止时进行编辑,修改提交并执行git rebase --continue
。在
M
提交之前,我收到了解决冲突的请求。这些冲突已经在将分支合并到M
时解决,因此我希望重新定位可以顺利进行。$ git rebase --continue
Auto-merging yet-another-test.txt
CONFLICT (content): Merge conflict in yet-another-test.txt
Automatic merge failed; fix conflicts and then commit the result.
Error redoing merge d01ffb203aae9ef450ae7a863de5fce2ed5184bb
您可以在这里找到示例,您可以尝试使用
git rebase -i -p 8b58 master
命令并编辑30c7
提交。我询问的原因是因为我的真实存储库的Git历史记录相当复杂,沿途有很多合并(总共约300个提交),而我需要编辑的提交靠近最初的提交,因此我想保留历史记录(避免压缩),但我不想再次解决所有冲突。
有更好的方法吗?
已在Git for Windows 2.17.1(最新版)上测试。