如何将一个 Git 分支合并到另一个分支
合并需要两个命令,但方向让人困惑,Git 可能会快进或创建合并提交。以下是确切的顺序、快进的含义以及何时使用哪个选项。
撰写者 Kodmora
GitTree 背后的软件公司
- 合并
- 分支
- 合并冲突
在此页面上
要将 `feature` 合并到 `main`,请切换到接收提交的分支,然后合并另一个分支:`git switch main`,后跟 `git merge feature`。 您所在的分支是发生更改的分支。如果 main 没有新提交,Git 会快进。否则,它会创建一个合并提交,并在双方发生冲突时停止。
如何逐步合并分支?
# get the latest
git fetch origin
# go to the branch that receives the work
git switch main
git pull --ff-only
# bring the other branch in
git merge feature/search
# publish it
git push从干净的树开始:首先提交或存储。如果您中途改变主意,`git merge --abort` 会带您返回。
合并走哪条路?
git merge X 始终意味着“将 X 引入我所在的分支”。因此,将 feature 合并到 main 是从 main 完成的,而使用最新的 main 更新 feature 则是从 feature 完成:
# keep a feature branch up to date
git switch feature/search
git fetch origin
git merge origin/main什么是快进合并?
如果接收分支自其他分支离开以来没有自己的提交,则没有任何内容可以合并。 Git 将分支指针向前移动到另一个分支的最新提交,并且不添加合并提交。历史始终是一条直线。发生这种情况时,Git 会打印 Fast-forward。
# before
main: A---B
\
feature: C---D
# after a fast-forward merge
main: A---B---C---D当两个分支都有新提交时,快进是不可能的,因此 Git 会与两个父分支进行合并提交。 快进课程 和合并分叉分支 课程在实践中展示了两者。
--ff-only、--no-ff 和 --squash 有何作用?
| 选项 | 结果 | 当 |
|---|---|---|
| (无) | 如果可能的话快进,否则合并提交 | 大多数日常合并 |
--ff-only | 快进或因错误而停止 | 从远程更新 main |
--no-ff | 始终是合并提交 | 您希望每个功能都在历史记录中可见 |
--squash | 所有更改均已暂存,无提交,无合并记录 | 你想要一个整洁的提交 |
git merge --ff-only origin/main
git merge --no-ff feature/search
git merge --squash feature/search
git commit -m "feat(search): quick open"当合并冲突时会发生什么?
Git 停止并标记冲突的文件。编辑它们,每一项都 git add,然后运行 git commit 以完成合并。 如何解决合并冲突 解释了标记。
我可以自动选择一侧吗?
# take their side wherever hunks conflict
git merge -X theirs feature/search
# take our side wherever hunks conflict
git merge -X ours feature/search
# during a merge, take one side of a whole file
git checkout --theirs path/to/file
git add path/to/file我应该合并还是变基?
合并完全保留历史记录,并且从不重写提交,因此它在共享分支上始终是安全的。 Rebase 会在另一个分支之上重放您的提交以形成一条直线,但它会重写它们,因此请将其保留在仅您使用的分支上。 合并与变基课程 会进行权衡。
合并后我应该做什么?
# check that the branch is fully merged
git branch --merged
# delete it locally and on the remote
git branch -d feature/search
git push origin --delete feature/search如何删除分支 涵盖了清理工作。要撤消已推送的合并,请参阅如何恢复合并提交。
如何合并 GitTree 中的分支
查看接收分支
双击应接收提交的分支,例如
develop。选择要合并的分支
右键单击包含新作品的分支标签,然后选择“将…合并到…”。您还可以将一个标签拖到另一个标签上。
阅读预览
GitTree 首先检查并告诉您无冲突合并。或哪些文件将因冲突而停止。
选择记录方式
在“记录为”下,选择“如果可能的话快进,否则合并提交”、“始终合并提交”、“仅快进”或“压缩到分阶段更改(无提交)”,然后按“合并”。

有关每个选项,请参阅合并分支。
常见问题
合并会删除另一个分支吗?
不,另一个分支仍保留在原来的位置。当您不再需要它时,请自行删除它。
如何将分支合并到 GitHub 上的主分支?
打开拉取请求并按合并。如果您在本地合并,请随后推送 main。分支保护可能需要拉取请求路由。
“已经是最新的”是什么意思?
您所在的分支已经包含其他分支的每个提交,因此无需合并。检查您是否位于正确的分支上,如果您需要新的远程提交,请运行 git fetch。
“拒绝合并不相关的历史”是什么意思?
这两个分支不共享共同的提交,通常是因为存储库被初始化了两次。如果您确实想加入他们,请添加 --allow-unrelated-histories。
压缩合并是真正的合并吗?
压缩合并会暂存汇总的更改,但不会创建提交,也不会记录合并祖先关系。你需要自行提交。之后 Git 仍不会把源分支视为已合并,因此 git branch -d 可能拒绝删除它。
来源
有关其他产品的声明已根据其位于 2026年11月8日 的官方页面进行了检查。价格和功能发生变化;供应商的页面是事实的来源。
