[学习笔记]git学习之fork的概念理解
来源:互联网 发布:2016年大连市经济数据 编辑:程序博客网 时间:2024/05/22 14:05
本文转自: http://linux.cn/article-4292-1.html
以我的经验来看,刚接触Git和GitHub时,最困扰的一件事情就是尝试解决下面的问题:在Git和GitHub上,我能做什么?
Git教程往往不会解决这个问题,因为它集中篇幅来教你Git命令和概念,并且不认为你会使用GitHub。GitHub帮助教程一定程度上弥补了这一缺陷,但是它每篇文章的关注点都较为狭隘,而且没有提供关于"Git vs GitHub"问题的概念性概述。
如果你是习惯于先理解概念,再着手代码的学习者,而且你也是Git和GitHub的初学者,我建议你先理解清楚什么是fork。为什么呢 ?
- Fork是在GitHub起步最普遍的方式。
- Fork只需要很少的Git命令,但是起得作用却非常大。
- Fork提供了对Git和GitHub最基础的了解,有益于你之后的工作。
本篇指南使用两张简单的图表,来教会你fork的两种主要工作流程。我并不打算涉及任何代码,但是在结论中,我会把你需要使用的代码的链接给你。
fork并且更新一个仓库
现在有这样一种情形:有一个叫做Joe的程序猿写了一个游戏程序,而你可能要去改进它。并且Joe将他的代码放在了GitHub仓库上。下面是你要做的事情:
fork并且更新GitHub仓库的图表演示
Fork他的仓库:这是GitHub操作,这个操作会复制Joe的仓库(包括文件,提交历史,issues,和其余一些东西)。复制后的仓库在你自己的GitHub帐号下。目前,你本地计算机对这个仓库没有任何操作。
Clone你的仓库:这是Git操作。使用该操作让你发送"请给我发一份我仓库的复制文件"的命令给GitHub。现在这个仓库就会存储在你本地计算机上。
更新某些文件:现在,你可以在任何程序或者环境下更新仓库里的文件。
提交你的更改:这是Git操作。使用该操作让你发送"记录我的更改"的命令至GitHub。此操作只在你的本地计算机上完成。
将你的更改push到你的GitHub仓库:这是Git操作。使用该操作让你发送"这是我的修改"的信息给GitHub。Push操作不会自动完成,所以直到你做了push操作,GitHub才知道你的提交。
给Joe发送一个pull request:如果你认为Joe会接受你的修改,你就可以给他发送一个pull request。这是GitHub操作,使用此操作可以帮助你和Joe交流你的修改,并且询问Joe是否愿意接受你的"pull request",当然,接不接受完全取决于他自己。
如果Joe接受了你的pull request,他将把那些修改拉到自己的仓库。胜利!
同步一个fork
Joe和其余贡献者已经对这个项目做了一些修改,而你将在他们的修改的基础上,还要再做一些修改。在你开始之前,你最好"同步你的fork",以确保在最新的复制版本里工作。下面是你要做的:
同步GitHub fork的图表示意图
从Joe的仓库中取出那些变化的文件:这是Git操作,使用该命令让你可以从Joe的仓库获取最新的文件。
将这些修改合并到你自己的仓库:这是Git操作,使用该命令使得那些修改更新到你的本地计算机(那些修改暂时存放在一个"分支"中)。记住:步骤1和2经常结合为一个命令使用,合并后的Git命令叫做"pull"。
将那些修改更新推送到你的GitHub仓库(可选):记住,你本地计算机不会自动更新你的GitHub仓库。所以,唯一更新GitHub仓库的办法就是将那些修改推送上去。你可以在步骤2完成后立即执行push,也可以等到你做了自己的一些修改,并已经本地提交后再执行推送操作。
比较一下fork和同步工作流程的区别:当你最初fork一个仓库的时候,信息的流向是从Joe的仓库到你的仓库,然后再到你本地计算机。但是最初的过程之后,信息的流向是从Joe的仓库到你的本地计算机,之后再到你的仓库。
- [学习笔记]git学习之fork的概念理解
- Git的理解学习笔记。
- CUDA学习笔记之几个重要概念的理解
- 软件工程学习笔记之一:一些概念之我的理解
- Spring 学习笔记--1、概念的理解
- java学习笔记-理解封装的概念
- Spring学习笔记:概念理解
- Github之更新fork过来的项目学习笔记
- Linux的进程学习笔记之fork与vfork
- 我的Git学习笔记(二) git分支理解
- GIT之学习笔记
- 学习理解GIT命令之git fetch的用法
- git学习笔记1- git 概念-依据git权威指南
- UML 学习笔记------ 面向对象概念的理解
- 数据结构概念理解的例子_学习笔记01
- Linux学习笔记--fork
- ETL学习笔记之概念
- Spring学习笔记:1、概念理解
- 【最小割】【图的点连通度】破坏图
- spring详解
- C语言学习笔记(四) -自定义函数 User-defined Function
- scrollview 不能滑动
- Myeclipse 配置多Tomcate 7.0 7.05
- [学习笔记]git学习之fork的概念理解
- php获取数组第一个值 current()
- Qt Quick常用的控件..
- Java JNI的详细介绍
- glm编译错误问题解决 formal parameter with __declspec(align('16')) won't be aligned
- 众筹第三方微信公众号更换通知
- 习题1—3
- solr运行配置与数据库数据导入到solr
- 合天安全实验室CTF之Web100