在Github和Git上fork之简单指南
创始人
2024-03-01 14:22:26
0

以我的经验来看,刚接触Git和GitHub时,最困扰的一件事情就是尝试解决下面的问题:在Git和GitHub上,我能做什么?

Git教程往往不会解决这个问题,因为它集中篇幅来教你Git命令和概念,并且不认为你会使用GitHub。GitHub帮助教程一定程度上弥补了这一缺陷,但是它每篇文章的关注点都较为狭隘,而且没有提供关于"Git vs GitHub"问题的概念性概述。

如果你是习惯于先理解概念,再着手代码的学习者,而且你也是Git和GitHub的初学者,我建议你先理解清楚什么是fork。为什么呢 ?

  1. Fork是在GitHub起步最普遍的方式。
  2. Fork只需要很少的Git命令,但是起得作用却非常大。
  3. Fork提供了对Git和GitHub最基础的了解,有益于你之后的工作。

**本篇指南使用两张简单的图表,来教会你fork的两种主要工作流程。**我并不打算涉及任何代码,但是在结论中,我会把你需要使用的代码的链接给你。

fork并且更新一个仓库

现在有这样一种情形:有一个叫做Joe的程序猿写了一个游戏程序,而你可能要去改进它。并且Joe将他的代码放在了GitHub仓库上。下面是你要做的事情:

Alt text

fork并且更新GitHub仓库的图表演示

  1. Fork他的仓库:这是GitHub操作,这个操作会复制Joe的仓库(包括文件,提交历史,issues,和其余一些东西)。复制后的仓库在你自己的GitHub帐号下。目前,你本地计算机对这个仓库没有任何操作。
  2. Clone你的仓库:这是Git操作。使用该操作让你发送"请给我发一份我仓库的复制文件"的命令给GitHub。现在这个仓库就会存储在你本地计算机上。
  3. 更新某些文件:现在,你可以在任何程序或者环境下更新仓库里的文件。
  4. 提交你的更改:这是Git操作。使用该操作让你发送"记录我的更改"的命令至GitHub。此操作只在你的本地计算机上完成。
  5. 将你的更改push到你的GitHub仓库:这是Git操作。使用该操作让你发送"这是我的修改"的信息给GitHub。Push操作不会自动完成,所以直到你做了push操作,GitHub才知道你的提交。
  6. 给Joe发送一个pull request:如果你认为Joe会接受你的修改,你就可以给他发送一个pull request。这是GitHub操作,使用此操作可以帮助你和Joe交流你的修改,并且询问Joe是否愿意接受你的"pull request",当然,接不接受完全取决于他自己。

如果Joe接受了你的pull request,他将把那些修改拉到自己的仓库。胜利!

同步一个fork

Joe和其余贡献者已经对这个项目做了一些修改,而你将在他们的修改的基础上,还要再做一些修改。在你开始之前,你最好"同步你的fork",以确保在最新的复制版本里工作。下面是你要做的:

Alt text

同步GitHub fork的图表示意图

  1. 从Joe的仓库中取出那些变化的文件:这是Git操作,使用该命令让你可以从Joe的仓库获取最新的文件。
  2. 将这些修改合并到你自己的仓库:这是Git操作,使用该命令使得那些修改更新到你的本地计算机(那些修改暂时存放在一个"分支"中)。记住:步骤1和2经常结合为一个命令使用,合并后的Git命令叫做"pull"。
  3. 将那些修改更新推送到你的GitHub仓库(可选):记住,你本地计算机不会自动更新你的GitHub仓库。所以,唯一更新GitHub仓库的办法就是将那些修改推送上去。你可以在步骤2完成后立即执行push,也可以等到你做了自己的一些修改,并已经本地提交后再执行推送操作。

比较一下fork和同步工作流程的区别:当你最初fork一个仓库的时候,信息的流向是从Joe的仓库到你的仓库,然后再到你本地计算机。但是最初的过程之后,信息的流向是从Joe的仓库到你的本地计算机,之后再到你的仓库。

结论

我希望这是一篇关于GitHub和Git 的 fork有用概述。现在,你已经理解了那些概念,你将会更容易地在实际中执行你的代码。GitHub关于fork和同步的文章将会给你大部分你需要的代码。

如果你是Git的初学者,而且你很喜欢这种学习方式,那么我极力推荐书籍Pro Git的前两个章节,网上是可以免费查阅的。

如果你喜欢视频学习,我创建了一个11部分的视频系列(总共36分钟),来向初学者介绍Git和GitHub。


via: http://www.dataschool.io/simple-guide-to-forks-in-github-and-git/

作者:Kevin Markham 译者:su-kaiyao 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

相关内容

可实现三重空间感知:Ai2...
IT之家 8 月 16 日消息,研究机构 Ai2 现已在 GitH...
2025-08-16 18:43:18
微软官宣!将开源Windo...
快科技8月5日消息,微软近日宣布,计划开源Windows 11的用...
2025-08-05 18:42:51
北京人形机器人创新中心发布...
IT之家 7 月 7 日消息,IT之家从北京人形机器人创新中心官方...
2025-07-07 22:14:23
音画同步,AI视频也能有完...
机器之心报道 编辑:泽南 AI 生成的「最后一道关卡」已经突破...
2025-06-27 22:12:41
银河通用X清华大学发布首款...
该论文由清华大学与北京银河通用机器人有限公司合作完成。论文的共同第...
2025-06-12 17:11:39
【Git】pull 分支报...
报错消息 示例图: 示例代码: ➜ ...
2025-06-01 18:31:43

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...