git merge
是 Git 里用于把一个或多个分支的修改整合到当前分支的命令。下面是对 git merge
合并分支的详细讲解。
基本用法
1. 合并前的准备
在进行合并操作之前,你需要明确两个分支:当前分支(也就是你要把其他分支合并进来的目标分支)和待合并的分支。你可以使用 git branch
查看所有分支,使用 git checkout
切换到目标分支。
# 查看所有分支
git branch
# 切换到目标分支,例如 master 分支
git checkout master
2. 合并分支
当你处于目标分支后,就可以使用 git merge
命令来合并其他分支。以下是基本的合并命令:
# 合并指定分支到当前分支
git merge <branch-name>
这里的 <branch-name>
是你想要合并到当前分支的分支名称。
合并的不同情况
1. 快进合并(Fast-forward)
若待合并分支的提交历史是当前分支提交历史的直接延续,Git 会执行快进合并。也就是说,Git 仅仅把当前分支的指针向前移动,使其指向待合并分支的最新提交。
示例:
# 切换到 master 分支
git checkout master
# 合并 feature 分支到 master 分支
git merge feature
2. 三方合并(Three-way merge)
当两个分支的提交历史存在分叉时,Git 会执行三方合并。Git 会找出两个分支的共同祖先,然后把两个分支的修改合并到一起,生成一个新的合并提交。
示例:
# 切换到 master 分支
git checkout master
# 合并 feature 分支到 master 分支
git merge feature
3. 合并冲突(Merge conflicts)
在合并过程中,如果两个分支对同一文件的同一部分做了不同的修改,Git 就无法自动合并,从而产生合并冲突。此时,你需要手动解决冲突。
# 切换到 master 分支
git checkout master
# 合并 feature 分支到 master 分支
git merge feature
# 若出现冲突,Git 会提示你手动解决
# 手动编辑冲突文件,解决冲突
# 解决冲突后,添加修改并提交
git add <conflicted-file>
git commit
合并选项
1. --no-ff
该选项用于禁止快进合并,即使可以进行快进合并,Git 也会创建一个新的合并提交。这有助于保留分支的历史记录。
git merge --no-ff <branch-name>
2. --squash
这个选项会把待合并分支的所有提交压缩成一个提交,然后合并到当前分支。这样可以让提交历史更加简洁。
git merge --squash <branch-name>
总结
git merge
是 Git 中非常重要的一个命令,它能帮助你把不同分支的修改整合到一起。在使用时,你需要根据实际情况选择合适的合并方式和选项,同时要注意处理可能出现的合并冲突。