解决 Git 合并冲突
记录一次解决 Git 合并的经历。
2024.5.21
在 stable-diffusion-webui 项目中存在几个能够加速的 PR,但是这些 PR 并没有合并进这个项目中,于是打算自己合并这几个 PR。
能起到加速作用的 PR 有以下几个:
- [Performance 1/6] use_checkpoint = False #15803
- [Performance 2/6] Replace einops.rearrange with torch native ops #15804
- [Performance 4/6] Precompute is_sdxl_inpaint flag #15806
- [Performance 5/6] Prevent unnecessary extra networks bias backup #15816
- [Performance 6/6] Add –precision half option to avoid casting during inference #15820
- LDM optimization patches #15824
我将这几个 PR 合并进项目的 dev 分支,此时的 Commit 为 ddb28b33a3561a360b429c76f28f7ff1ffe282a0。尝试将上面的 PR 按顺序合并进 dev 分支中,前 5 个的合并很顺利,但是在合并第 6 个 PR 时出现了冲突,Github 提示我需要手动解决这个冲突。
- 将出现合并冲突的仓库克隆下来。
1 |
|
- 在仓库中把分支切换到要合并 PR 的那个 patch-4 分支。
1 |
|
- 现在将分支切换到要合并到的 dev 分支中。
1 |
|
- 将远程地址切换成自己已经合并前 5 个 PR 的项目地址上,并拉取更新。
1 |
|
- 尝试将出现冲突的 patch-4 分支合并到 dev 分支中。
1 |
|
- 此时这里提示合并冲突,需要修改冲突的部分。
1 |
|
这是冲突的代码部分。
1 |
|
在起冲突的地方,Git 使用一些标识将两个冲突的部分划分了出来。
1 |
|
解决冲突的时需要将上面注释的部分删除,修改后的结果如下。
1 |
|
- 保存这个文件后,将这个文件添加到 Git 的暂存区,并提交更改。
1 |
|
这里打开了提交信息编辑器,让我编辑提交信息。
1 |
|
这个提交信息不需要修改,直接保存,保存后会显示最终的提交信息。
1 |
|
- 这时冲突已经完全解决,将这个分支提交到远程仓库中。
1 |
|
2024.5.29
原项目更新后,我需要将这些更新同步到自己的分支上,所以我需要将原项目的分支添加到自己的仓库上
1 |
|
这样就在本地的仓库中添加了原项目的地址,并创建了一个新分支来连接这个地址。
现在回到自己的的分支上并合并原仓库的更新。
1 |
|
另外发现一个更加合适的合并分支的方式,这里先把自己的仓库的提交信息回退到之前要解决冲突的提交信息上,用作演示。
1 |
|
将那个要合并那个加速补丁的仓库的地址添加到本地仓库,并拉取内容到本地仓库中。
1 |
|
虽然 Git 提示未指定一个分支,但是那个仓库的内容已经拉取下来了,这时候可以合并那个仓库中的加速补丁的分支。
1 |
|
和之前的解决冲突时的提示一样,按照之前的方法解决冲突就行。相比之前去解决冲突的方法,这个方法更加便捷,可以省去一些步骤。
2024.6.23
这次试着把 [WIP] Asynchronous model mover for lowvram by wfjsw · Pull Request #14855 · AUTOMATIC1111/stable-diffusion-webui 这个 PR 合并。
1 |
|