Lazy loaded image
🏡远程仓库合并问题
字数 982阅读时长 3 分钟
2025-3-4
2025-3-4
type
status
date
slug
summary
tags
category
icon
password
😀
如果你从github上fork了一个仓库,然后本地调整了一些配置,某一天,远程仓库更新了,你要怎么同步呢?今天我就遇到了这个问题。

❓ 问题描述

我在github上fork了一个项目到自己的仓库中,然后对某些文件进行了修改后部署。现
在原始仓库更新了,我如果直接在github上点击Sync Fork,被提示产生冲突,除非Discard 6 commits。
但我不想放弃这些提交,有没有办法在尽量不影响我自己的配置的情况下(或者让我来决定合并谁),同步远程仓库呢?

🤔 解决办法

为了在保留你的提交的同时同步上游仓库的更新,可以按照以下步骤操作:

步骤 1:添加上游远程仓库

首先,将原始仓库添加为上游远程,便于获取更新。

步骤 2:获取上游仓库的最新更改

拉取原始仓库的最新代码到本地:

步骤 3:切换到你的本地主分支

确保你在自己的主分支(通常是 main 或 master):

步骤 4:合并上游的更改到本地分支

将上游的更新合并到你的分支。这里有两种方法:

方法一:合并(Merge)

  • 冲突处理:如果出现冲突,Git会标记冲突文件。手动解决冲突后,提交合并结果:

    方法二:变基(Rebase,可选)

    如果你希望提交历史更线性,可以使用变基:
    • 冲突处理:在变基过程中遇到冲突时,解决冲突后执行:
      • 完成所有冲突解决后,强制推送(⚠️ 仅限个人分支):

    步骤 5:推送合并后的结果到你的GitHub仓库

    将本地已合并的分支推送到你的远程仓库:

    关键点总结

    • 手动解决冲突:无论是合并还是变基,你都可以在冲突文件中通过 <<<<<<< 和 >>>>>>> 标记处决定保留哪些更改。
    • 保留提交历史:通过合并或变基,你的本地提交会与上游更新整合,避免丢弃任何提交。
    • 后续同步:定期执行 git fetch upstream 并合并,可减少未来冲突的概率。

    附加建议

    • 分支策略:未来建议在单独的分支(如 dev)开发新功能,保持 main 分支仅用于同步上游更新,减少冲突。
    • 使用Pull Request:在自己的仓库中创建分支,通过PR合并到 main,便于代码审查和管理。
    通过以上步骤,你既能同步原始仓库的更新,又能自主决定如何保留或合并你的修改。

    🤗 总结归纳

    根据这个办法,成功在merge的时候显示了自己本地与远端更新后仓库的冲突,可以选择使用vscode等软件可视化对比冲突并选择保留哪些,然后合并后提交。
    这样新部署的网站或代码,能享受到最新的更新,又能继承原有的个人配置,两全其美!
    💡
    本方法由Deepseek辅助解决,本人实际测试后有效,不代表能解决所有问题,请具体情况具体分析,欢迎友善交流~
     
    上一篇
    Ubuntu Pro的开启与选择
    下一篇
    个人常用软件总结分类及linux平替