如今有这样一种情形:有一个叫作Joe的程序猿写了一个游戏程序,而你可能要去改进它。而且Joe将他的代码放在了GitHub仓库上。下面是你要作的事情:游戏
fork而且更新GitHub仓库的图表演示同步
Fork他的仓库:这是GitHub操做,这个操做会复制Joe的仓库(包括文件,提交历史,issues,和其他一些东西)。复制后的仓库在你本身的GitHub账号下。目前,你本地计算机对这个仓库没有任何操做。工作流
Clone你的仓库:这是Git操做。使用该操做让你发送"请给我发一份我仓库的复制文件"的命令给GitHub。如今这个仓库就会存储在你本地计算机上。it
更新某些文件:如今,你能够在任何程序或者环境下更新仓库里的文件。class
提交你的更改:这是Git操做。使用该操做让你发送"记录个人更改"的命令至GitHub。此操做只在你的本地计算机上完成。基础
将你的更改push到你的GitHub仓库:这是Git操做。使用该操做让你发送"这是个人修改"的信息给GitHub。Push操做不会自动完成,因此直到你作了push操做,GitHub才知道你的提交。request
给Joe发送一个pull request:若是你认为Joe会接受你的修改,你就能够给他发送一个pull request。这是GitHub操做,使用此操做能够帮助你和Joe交流你的修改,而且询问Joe是否愿意接受你的"pull request",固然,接不接受彻底取决于他本身。程序
若是Joe接受了你的pull request,他将把那些修改拉到本身的仓库。胜利!im
Joe和其他贡献者已经对这个项目作了一些修改,而你将在他们的修改的基础上,还要再作一些修改。在你开始以前,你最好"同步你的fork",以确保在最新的复制版本里工做。下面是你要作的:图表
同步GitHub fork的图表示意图
从Joe的仓库中取出那些变化的文件:这是Git操做,使用该命令让你能够从Joe的仓库获取最新的文件。
将这些修改合并到你本身的仓库:这是Git操做,使用该命令使得那些修改更新到你的本地计算机(那些修改暂时存放在一个"分支"中)。记住:步骤1和2常常结合为一个命令使用,合并后的Git命令叫作"pull"。
将那些修改更新推送到你的GitHub仓库(可选):记住,你本地计算机不会自动更新你的GitHub仓库。因此,惟一更新GitHub仓库的办法就是将那些修改推送上去。你能够在步骤2完成后当即执行push,也能够等到你作了本身的一些修改,并已经本地提交后再执行推送操做。
比较一下fork和同步工做流程的区别:当你最初fork一个仓库的时候,信息的流向是从Joe的仓库到你的仓库,而后再到你本地计算机。可是最初的过程以后,信息的流向是从Joe的仓库到你的本地计算机,以后再到你的仓库。