GitHub 的 Fork

本文介绍了如何在GitHub上通过Fork与Sync进行代码协作。包括如何复制远程仓库到个人账号下,本地克隆仓库,更新文件并提交更改,以及如何发送Pull Request请求等关键步骤。

作者: Kevin Markham 译者: LCTT Kaiyao 

| 2014-11-24 16:24   评论: 25 收藏: 1 分享: 34    

软件开发|在Github和Git上fork之简单指南 (linux.cn)

 

fork并且更新一个仓库

 现在有这样一种情形:

有一个叫做Joe的程序猿写了一个游戏程序,而你可能要去改进它。并且Joe将他的代码放在了GitHub仓库上。

下面是你要做的事情

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",当然,接不接受完全取决于他自己。

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

同步一个fork

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

同步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。

 

### 如何在GitHub上进行fork操作 #### 创建Fork 当希望基于他人的项目创建自己的版本而不影响原项目时,可以使用Fork功能。通过点击目标仓库页面右上方的"Fork"按钮来启动此过程[^1]。 ```bash # 假设已经登录到GitHub账户 # 找到想要分叉的目标仓库主页 # 页面顶部右侧有明显的 "Fork" 按钮 ``` #### Clone Fork后的仓库至本地环境 完成上述步骤后,在个人账号下的新复制版库中会看到该项目副本。此时可将其克隆下来以便于本地开发: ```bash git clone https://github.com/YourUsername/ForkedRepo.git cd ForkedRepo ``` #### 设置上游远程地址并与之同步更新 为了能够获取原始项目的最新改动,需配置指向源仓库的远端连接,并定期拉取最新的变更记录: ```bash # 添加名为 'upstream' 的远程链接指向官方主仓 git remote add upstream https://github.com/OriginalAuthor/OriginalRepo.git # 查看当前已设置的所有远程路径确认无误 git remote -v # 获取来自上级资源库的数据流但不自动合并入工作区 git fetch upstream # 将抓取的内容整合进指定分支内(通常为主干master) git merge upstream/master # 或者采用更简洁的一键式同步方式 git pull upstream master ``` #### 提交Pull Request贡献代码改进 经过一系列编辑调整之后准备向初始作者发起请求审核所作变动,则按照如下流程执行: ```bash # 创立新的特性专题分支开展具体任务前 git checkout -b feature-branch-name # 完成编码作业后再切换回默认发布线路上做最终集成测试 git checkout main || git checkout master # 把特色子项里的成果纳入主线之中去 git merge feature-branch-name # 推送到云端服务器等待他人审阅反馈意见 git push origin HEAD ``` 最后一步就是在网页界面上找到对应位置提交PR给维护人员评估是否采纳这些变化了[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值