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:合并上游的更改到本地分支
将上游的更新合并到你的分支。这里有两种方法:
步骤 5:推送合并后的结果到你的GitHub仓库
将本地已合并的分支推送到你的远程仓库:
关键点总结
- 手动解决冲突:无论是合并还是变基,你都可以在冲突文件中通过
<<<<<<<
和>>>>>>>
标记处决定保留哪些更改。
- 保留提交历史:通过合并或变基,你的本地提交会与上游更新整合,避免丢弃任何提交。
- 后续同步:定期执行
git fetch upstream
并合并,可减少未来冲突的概率。
附加建议
- 分支策略:未来建议在单独的分支(如
dev
)开发新功能,保持main
分支仅用于同步上游更新,减少冲突。
- 使用Pull Request:在自己的仓库中创建分支,通过PR合并到
main
,便于代码审查和管理。
通过以上步骤,你既能同步原始仓库的更新,又能自主决定如何保留或合并你的修改。
🤗 总结归纳
根据这个办法,成功在merge的时候显示了自己本地与远端更新后仓库的冲突,可以选择使用vscode等软件可视化对比冲突并选择保留哪些,然后合并后提交。
这样新部署的网站或代码,能享受到最新的更新,又能继承原有的个人配置,两全其美!
本方法由Deepseek辅助解决,本人实际测试后有效,不代表能解决所有问题,请具体情况具体分析,欢迎友善交流~
- 作者:VergilYZX
- 链接:https://vergilyzx.vercel.app//article/git-upstream
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。