简介:方法 1:使用 git merge(推荐,保留完整提交历史)步骤切换到 master 分支bash复制下载git checkout master将 main 合并到 masterbash复制下载git...
方法 1:使用 git merge(推荐,保留完整提交历史)
步骤
- 切换到 master 分支bash复制下载git checkout master
- 将 main 合并到 masterbash复制下载git merge main这会生成一个 合并提交,保留 main 的所有历史记录。如果有冲突,手动解决后 git add 并 git commit。
- 推送 master 到远程bash复制下载git push origin master
结果
- master 分支会新增一个 合并提交,包含 main 的所有更改。
- 提交历史会显示 main 的 10 次提交 + master 的 2 次提交 + 1 次合并提交。
方法 2:使用 git rebase(线性历史,不推荐新手)
如果你希望 main
的提交在 master
之后 线性排列(而不是合并提交),可以使用 rebase
:
步骤
- 切换到 main 分支bash复制下载git checkout main
- 变基到 masterbash复制下载git rebase master这会 重放 main 的 10 次提交 到 master 的最新提交之后。如果有冲突,解决后 git add 并 git rebase --continue。
- 切换到 master 并快进合并bash复制下载git checkout master git merge main由于 rebase 后 main 已经基于 master,master 可以直接快进合并。
- 推送 master 到远程bash复制下载git push origin master
结果
- master 分支会包含 main 的 10 次提交 + master 的 2 次提交,没有合并提交,历史是线性的。
方法 3:直接 git reset --hard(强制同步,谨慎使用)
如果你 不关心 main 的提交历史
,只想让 master
完全变成 main
的状态(丢弃 master
的 2 次提交):
bash
复制
下载
git checkout master
git reset --hard main
git push origin master --force # 强制覆盖远程 master
⚠️ 危险操作:这会 丢弃 master 的所有更改
,仅适用于你确定 main
的代码是最终版本。
总结
方法 | 适用场景 | 提交历史 | 是否推荐 |
---|---|---|---|
git merge | 保留 main 的所有历史 | 有合并提交 | ✅ 推荐 |
git rebase | 线性历史,避免合并提交 | 无合并提交 | ⚠️ 适合高级用户 |
git reset --hard | 强制同步,丢弃 master 的更改 | 完全替换 | ❌ 谨慎使用 |
推荐方案
- 默认用 git merge(保留完整历史)。
- 如果团队允许,用 git rebase(更干净的线性历史)。
- 不要轻易 reset --hard(会丢失提交)。
希望这能帮到你!🚀