别院牧志知识库 别院牧志知识库
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • 面试

    • Python 面试题
    • 2022 面试记录
    • 2021 面试记录
    • 2020 面试记录
    • 2019 面试记录
    • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • 面试

    • Python 面试题
    • 2022 面试记录
    • 2021 面试记录
    • 2020 面试记录
    • 2019 面试记录
    • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 工作
  • 规范

  • Linux

  • 数据库

  • Git

    • Git 知识整理
    • 使用 SSH 连接到 GitHub
    • Git 参考手册
    • Git 常用操作
    • 给你的 Github 克隆加速!🎈
    • 删除 Git 所有 Commit 记录
    • 如何使 Github 上面 fork 的代码与原仓库保持同步更新
      • 引言
        • merge 前的设定
        • merge 的关键命令
      • 参考链接
    • git 工作流
    • git 仓库忽略个人私有的文件
  • 👨‍💻Web

  • 英语

  • Docker

  • 编辑器

  • 网络

  • 前端

  • 存储

  • 备忘录

  • 如何开始你的单元测试
  • 以程序员的视角看中国——西安篇
  • 💻工作
  • Git
佚名
2021-01-16
目录

如何使 Github 上面 fork 的代码与原仓库保持同步更新

# 引言

如果我们是一个“面向 Github 编程”的程序员,那么想象以下情境:

  • 你 fork 一份别人的代码然后定制化,然后你更新到自己的仓库里

假定你的代码要保持更新(不断追踪作者代码的更新)

  1. 达则兼济天下,你有一部分代码写得很漂亮,你想贡献给开源社区

然后你把自己的代码提交 PR 到原始作者仓库,然后你发现作者的代码和你的合并不到一块了。你需要先拉取更新,然后本地合并,最后才能贡献代码。

也就是说:在你 fork 之后,上游仓库(即被你 fork 的仓库)又更新了,但 github 不会自动帮你把 xiaolai 的仓库同步给你 fork 后的仓库。最省事的办法可能是:

  • 在你 fork 的仓库 setting 页翻到最下方,然后 delete 这个仓库;
  • 然后重新 fork xiaolai 的仓库,并 git clone 到你的本地。

有时候,你需要用到这个省事的办法,比如 xiaolai 的仓库再次整理了 commit 。但在更多情况下,删掉自己 fork 的库,应该是你的最后选择,而不应该是首选。

和很多人一起向 xiaolai 提交 pull request,这实在是一个反复练习 merge (中文说法:合并,或版本合并)的机会。毫不夸张地讲,版本管理是软件工程极其重要的规范,也是极其基础的必备技能。而 merge 则是版本管理中最必须也最常用的场景。

那要不然,就多练练?以下是傻瓜版操作步骤,还细心配了截图,保管你从 0 也能上手。至于原理嘛,慢慢再搞懂吧。

# merge 前的设定

step 1、进入到本地仓库的目录。

下面所有操作,如无特别说明,都是在你的本地仓库的目录下操作。比如我的本地仓库为/from-liujuanjuan-the-craft-of-selfteaching

image (opens new window)

step 2、执行命令 git remote -v 查看你的远程仓库的路径:

image (opens new window)

如果只有上面 2 行,说明你未设置 upstream (中文叫:上游代码库)。一般情况下,设置好一次 upstream 后就无需重复设置。

step 3、执行命令 git remote add upstream https://github.com/selfteaching/the-craft-of-selfteaching.git 把 xiaolai 的仓库设置为你的 upstream 。这个命令执行后,没有任何返回信息;所以再次执行命令 git remote -v 检查是否成功。

image (opens new window)

step 4、执行命令 git status 检查本地是否有未提交的修改。如果有,则把你本地的有效修改,先从本地仓库推送到你的 github 仓库。最后再执行一次 git status 检查本地已无未提交的修改。

git add -A 或者 git add filename
git commit -m "your note"
git push origin master
git status

注 1:这一步作为新手,建议严格执行,是为了避免大量无效修改或文本冲突带来的更复杂局面。

注 2:如果你已经在 fork 后的仓库提交了大量对 xiaolai 的仓库并没有价值的修改,那么想要 pull request,还是重新回到本文最初的“最省事办法”吧。

# merge 的关键命令

以下操作紧接着上面的步骤。

step 5、执行命令 git fetch upstream 抓取 xiaolai 原仓库的更新:

image (opens new window)

step 6、执行命令 git checkout master 切换到 master 分支:

image (opens new window)

step 7、执行命令 git merge upstream/master 合并远程的 master 分支:

image (opens new window)

step 8、执行命令 git push 把本地仓库向 github 仓库(你 fork 到自己名下的仓库)推送修改

如果担心自己不小心改了哪里,可以再次执行命令 git status 检查哪些文件有变化。这个操作仅是检查,不会改变任何状态,放心用。

image (opens new window)

现在你已经解决了 fork 的仓库和原仓库版本不一致的问题。可以放心向 xiaolai 发起 pull request 了。如果以上操作你花了不少时间,而 xiaolai 的仓库 又恰好更新了。很好,一次新的练习机会来了……

# 参考链接

Github 进行 fork 后如何与原仓库同步_千淘万漉-CSDN 博客 (opens new window) fork 了别人的仓库后如何保持同步更新_shengjk1 的博客-CSDN 博客 (opens new window)

编辑 (opens new window)
#Git
上次更新: 2024-07-15, 08:03:22
删除 Git 所有 Commit 记录
git 工作流

← 删除 Git 所有 Commit 记录 git 工作流→

最近更新
01
提升沟通亲和力的实用策略
03-26
02
工作
07-15
03
如何选房子
06-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 IMOYAO | 别院牧志
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式