GitHub教程(三) 本地仓库托管到GitHub

本文开头先特别声明一下:因为GitHub教程属于Git系列教程的GitHub子篇章,所以GitHub教程中将再也不详细介绍Git操做命令及其用法,我会根据实际须要穿插着回顾Git操做命令。若是读者须要学习或者回顾Git命令,能够参考Git系列教程中的Git子篇章,固然也能够参考廖雪峰Git教程,廖雪峰老师的Git教程讲得仍是挺不错的,通俗易懂。html

 

首先须要添加本地Git公钥到GitHub帐户下,这样就可以将您的帐户绑定到本身的GitHub帐户,操做以下:git

到此为止,您的本地Git已经和GitHub绑定。如何验证是否绑定成功?github

ssh -T git@github.com

在本地git-bash中输入上面指令后,若是出现的是相似下图的状况,说明已经绑定成功,能够进入下一步操做啦。vim

Congratulation!bash

 

成功绑定github帐户后,咱们须要在GitHub平台上New repository。具体怎么操做再也不重复叙述,能够参看GitHub教程(一) 使用指南。结果相似以下:微信

而后咱们把GitHub上的这个远程分支(origin master,master---版本库主分支标记,origin---默认的远程版本库的名字[别名(alias),可修改]) clone 到本地目录。微信公众平台

$ git clone git@github.com:帐户名/项目名.git   // git协议的url路径能够在 Clone or download 选项中copy 

值得注意的是,git clone "url(protocol:git)"命令可以在任意目录下使用,只要在该目录下可以打开git-bash[应该都能打开,即任意目录下都可用]。eclipse

如今进入到从远程仓库clone下来的本地Git仓库,里面有几个文件,其中.git指的是本地版本库(内部包括待命区[index]和版本库[master])。ssh

在此目录下,咱们使用 $ git log 命令查看提交历史信息,具体状况分析以下图所示maven

Note:关于Git版本库等内容,请参考系列教程Git系列教程(二) Git仓库目录结构,因为文章篇幅问题,此处再也不展开讨论。

到此为止,您已经完成了一半任务---从GitHub上建立仓库,并拷贝到本地。

Bravo!

 

有些东西如今不清楚它们具体的做用也没有事,在使用过程当中您就会慢慢对这些东西有更加深刻的理解体会。一点一点克服不适应,才能成为专家。记得有句话说的挺好的:正由于困难,才容易成功。部份内容我已经从命令行改为了eclipse操做,这样下降了入门Git的难度,也有利于读者直观的了解Git的状况。

要经过Git传本地仓库到远程仓库,您的本地xxx/master必须得与相对远程origin/master有差别。

问题  为何本地Git仓库和远程Git仓库之间必须有差别?

回答  这其实与Git的实现方式紧密相关。Git经过差别分析器(好比vimdiff)来比较两个版本库之间内容的差别,再提交差别的内容。同窗能够想象一下,若是如今项目有100G的内容,可是差别只有1M,是否是就不须要将1G内容从新都传一遍,而只要传1M内容,速度的提升十分显著。这就是为何Git这么流行的重要缘由之一。

这儿准备上传到GitHub的项目是我帮朋友作的毕设项目---微信公众平台助手,固然项目自己不值一提,本科毕业设计的难度你懂的,就那个档次水平。

您能够暂时停一下,先把项目用maven搭建好咯,再继续看。。。

至于具体怎么构建maven project,这个问题不属于本系列教程的范畴,您能够参考其它资料(好比 Maven In Action,中文翻译成 maven实战)。

在此苦等若干分钟

提问  为何你选择搭建maven project?

回答  这里我要解释一下。第一点,之前我也不用maven工程,可是到公司上班后才发现公司使用maven来构建工程,用完以后发现这玩意儿太爽了,妈妈不再用担忧我jar包依赖问题了,pom.xml文件轻松搞定(其实也不轻松,不过相对之前那种纯手工,来的仍是稍微方便点,纯属我的感受);第二点,貌似 github上面开源的项目都是基于maven构建的,能够看出maven就是项目构建技术的一种重要趋势(还有别的方法也在出来,能够查查),紧跟时代潮流呗。 

跪着递上一副原理图,摘录自Git基本原理详解尊重版权,礼貌性地加个连接 】,主要是这种图本身再画一遍也相似,因此只是在原图基础上稍加改动。。。

如今咱们要作的是将现有的maven项目代码copy到工做目录中,工做目录 (working tree) 正是咱们本地maven工程应有的藏身之所。CV大法。。。

使用CV大法后,结果就是这样,固然这只是表面现象。

而后打开eclipse,将原来的maven工程删除,再将此存在的maven工程import到eclipse中。Import Existing Maven Project后,具体结果以下。

若是开发者修改本地代码,eclipse的git插件会在工程上出现">"小箭头,表示工做目录已修改,须要提交到暂存区。

因为这里只是单纯的将maven工程copy到Git仓库中,可是本地仓库却没有对这个maven工程的任一文件有跟踪监视(track)。不信的话咱们用尝试着用命令看看呗,验证一下我说的究竟是否正确。

好像就是这种状况捏。那么问题就来了[自古深情留不住,惟有套路得人心。哦耶!]

提问  何时文件会被跟踪,为何?

回答  这玩意其实仍是稍微有些复杂,我就挑“软骨头”啃啃。只有在工做目录中的文件被归入版本库(至少是被add到版本库的index区)时才会被Git监控追踪。缘由用通俗的话解释起来很简单:C语言的文件指针难道不须要赋地址值就可以操做文件吗?显然不可能。那这里也是这个道理咯。

如今问题已经搞清楚了,那么就对症下药。

$ git add <file>  // 若是填 * 则表明将工做区中的全部文件都添加到暂存区 

eclipse集成JGit后则有相应的GUI界面简化命令行操做。在工程中右键,Team → Add to Index,将工做目录修改add添加到暂存区。

本地更改提交到 暂存区(index)后,git插件会提示一个"↑"小箭头,表示暂存区中有代码须要先commit到本地仓库而后再push到远程仓库。
若是仅仅是commit到本地仓库,这个小箭头仍是会存在,必须push到远程仓库后才会消失。

查看一下具体的分支状况,在eclipse中操做结果以下图所示。

选择commit and push,提交更改到远程仓库

项目更新后结果以下

查看远程版本库,GitHub结果以下

"白猫黑猫,抓到老鼠就是好猫",显然上述eclipse集成JGit可以帮助咱们快速完成任务。

不过必须指出,虽然使用eclipse集成JGit插件简化Git的入门难度,能帮助用户快速使用Git,可是对读者自身提升---了解Git原理倒是不利的。

 

通过这节教程学习,或许看完的同窗仍是云里雾里,不少概念尚未清晰的理解把握,我认为这种状况是正常的,慢慢地总结学习吧。

相关文章
相关标签/搜索