• fork仓库的代码如何同步主仓库代码


    1.背景

    我fork了一份 jekyll-theme-chirpy 仓库的代码(基于 jekyll 的自建博客仓库,可以免服务器),我需要在上面更新我的博客文章,但是我又想一直同步 jekyll-theme-chirpy 仓库的新功能,这样我可以更新自己的博客功能。所以我就需要定期同步 jekyll-theme-chirpy 仓库的代码。

    2.方法一:删除旧的fork仓库,重新fork,将需要的代码拷贝进新fork的仓库

    这种办法太繁琐,且容易出错,一般不推荐使用,除非你不怕麻烦

    • 进入fork仓库,点击 tab 页的Settings,将页面滑到最底下,找到 Delete this repository 按钮,点击它进行删除仓库
    • 重新 fork 原始仓库,并 clone 到你的本地
    • 将需要的代码拷贝进新的fork仓库
    • 提交commit,将fork仓库推送至github

    3.方法二:merge原始仓库代码

    3.1.进入本地fork仓库,执行git remote -v查看远程仓库路径

    git remote -v
    # origin  git@github.com:rookie-luochao/rookie-luochao.github.io.git (fetch)
    # origin  git@github.com:rookie-luochao/rookie-luochao.github.io.git (push)
    
    • 1
    • 2
    • 3

    执行git remote -v显示只有名为 origin 的两行路径,说明你未设置upstream(上游代码库)

    3.2.设置upstream

    使用git remote add upstream将原始仓库设置为fork仓库的upstream,然后在执行git remote -v查看

    git remote add upstream git@github.com:cotes2020/jekyll-theme-chirpy.git
    
    git remote -v
    # origin  git@github.com:rookie-luochao/rookie-luochao.github.io.git (fetch)
    # origin  git@github.com:rookie-luochao/rookie-luochao.github.io.git (push)
    # upstream        git@github.com:cotes2020/jekyll-theme-chirpy.git (fetch)
    # upstream        git@github.com:cotes2020/jekyll-theme-chirpy.git (push)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    执行git remote -v显示多了名为 upstream 的两行路径,说明已经设置好upstream

    3.3.检查本地改动信息

    执行git status检查本地是否有改动信息,如果有改动信息,请提交commit

    3.4.拉取 upstream 代码

    建议fork仓库将所有改动都合并到 master 分支,然后再去同步 upstream 的 master 分支代码
    执行以下命令拉取 upstream 代码

    git fetch upstream
    # 处理 delta 中: 100% (69/69), 完成 33 个本地对象.
    # 来自 github.com:cotes2020/jekyll-theme-chirpy
    
    • 1
    • 2
    • 3

    3.5.合并 upstream 代码

    执行以下命令合并 upstream 代码,如果有冲突,请解决冲突后再commit一次

    git merge upstream/master
    
    # 如果有代码冲突,请解决冲突后执行以下命令进行合并
    git add .
    git commit -m "fix: fix conflict"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    一般情况下合并 upstream 代码肯定会有冲突,所以建议不要使用git pull --rebase upstream/master命令,因为解决冲突后使用git log查看 commit 记录会很奇怪

    3.6.推送合并后的代码至远程仓库

    执行以下命令将代码推送至远程仓库

    git push
    
    • 1
    参考链接:the-craft-of-selfteaching/issues/67
  • 相关阅读:
    java计算机毕业设计社区人员管理系统(附源码、数据库)
    SSM框架学习——SqlSession以及Spring与MyBatis整合
    基于LEX的词法分析实验
    D. Monocarp and the Set-Educational Codeforces Round 156 (Rated for Div. 2)
    瑞吉外卖项目实战Day03
    【机器学习基础】——另一个视角解释SVM
    渗透测试CTF-流量分析
    Langchain-Chatchat项目:5.1-ChatGLM3-6B工具调用
    【毕业设计】33-基于单片机的直流电机的转速检测与控制设计(原理图工程+PCB工程+源代码工程+仿真工程+答辩论文)
    IDEA--tomcat日志乱码
  • 原文地址:https://blog.csdn.net/luo1055120207/article/details/133467546