基础合并操作
我们来创建并切换到 `hotfix` 分支,以便进行特定的修复工作:
```bash
$ git checkout -b hotfix
Switched to branch 'hotfix'
```
在 `hotfix` 分支上完成必要的修改并提交。随着工作的推进,`hotfix` 分支会不断向前移动。
完成修复后,确保修改没有问题,我们将 `hotfix` 分支的改动合并回 `main` 分支,以部署线上:
```bash
$ git checkout main
$ git merge hotfix
Updating ca5ebf0..5b7de6e
Fast-forward
README.md | 1 +
1 file changed, 1 insertion(+)
```
由于 `main` 分支所指向的提交是 `hotfix` 分支提交的直接上游,Git 会简单地将指针向前移动,这个过程称为“快进”。换句话说,当两个分支的提交历史存在一条直线连接时,Git 合并它们只需要移动指针。这种情况下没有需要解决的冲突,因此显示为“Fast-forward”。将 `main` 分支推送到远程服务器即可。
三方合并及合并冲突处理
创建 `iss52` 和 `iss53` 分支以进行不同的任务:
```bash
git branch iss52
git branch iss53
```
在 `iss52` 分支上完成修改并提交。然后切换到 `main` 分支并合并 `iss52` 的改动。
接下来,在 `iss53` 分支进行不同的修改并提交。当 `iss53` 上的工作完成时,需要将其内容合并到 `main` 分支。与之前合并 `hotfix` 分支的情况不同,此时 `main` 分支的提交并不在 `iss53` 分支的提交的上游。换句话说,`iss53` 分支可能不包含 `iss52` 分支的改动。这种情况下进行合并涉及三方内容:两个分支的末端所指的快照以及它们的共同上游。
执行命令 `$ git checkout iss53` 后,你切换到了 `iss53` 分支。紧接着,使用 `$ git merge main` 尝试将 `main` 分支的代码合并到当前分支。自动合并过程在 `README.md` 文件中遇到了冲突。合并失败了,你需要解决这些冲突后再进行提交。
你可以通过执行 `$ git status` 命令来查看未合并的文件。在 `iss53` 分支上,你的代码是最新的,并且有一些未解决的合并路径。这些路径指向了包含冲突的 `README.md` 文件。解决冲突的方法很简单,只需要打开这个文件,你会看到它被一条分割线分割成了两部分,一部分是当前分支的修改内容,另一部分是被合并进来的分支的修改内容。你可以选择保留一方的修改,也可以结合双方的修改。VSCode 提供了一种直观的合并工具,点击“在合并编辑器中解析”即可启动它来帮助你解决冲突。解决冲突后,点击“完成合并”,Git 就会将这些已解决的冲突标记为已解决状态。
再次运行 `$ git status` 确认所有的合并冲突是否都已解决。如果一切正常,你就可以输入 `$ git commit -m 'Merge branch 'main' into iss53'` 来完成这次合并提交。此刻,分支 `iss53` 成功合并了来自 `main` 分支的代码,版本号更新至 [iss53 91a08e6]。现在你可以继续你的开发工作了。
文章来自《钓虾网小编|www.jnqjk.cn》整理于网络,文章内容不代表本站立场,转载请注明出处。