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

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

首先需要添加本地Git公钥到GitHub账户下,这样就能够将您的账户绑定到自己的GitHub账户,操作如下:

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

ssh -T [email protected]

在本地git-bash中输入上面指令后,如果出现的是类似下图的情况,说明已经绑定成功,可以进入下一步操作啦。

Congratulation!

成功绑定github账户后,我们需要在GitHub平台上New repository。具体怎么操作不再重复叙述,可以参看GitHub教程(一) 使用指南。结果类似如下:

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

$ git clone [email protected]:账户名/项目名.git   // git协议的url路径可以在 Clone or download 选项中copy 

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

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

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

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原理却是不利的。

经过这节教程学习,或许看完的同学还是云里雾里,很多概念还没有清晰的理解把握,我认为这种情况是正常的,慢慢地总结学习吧。

时间: 2024-10-06 07:44:02

GitHub教程(三) 本地仓库托管到GitHub的相关文章

Git 常用命令 以及 如何将一个本地仓库托管到GitHub中

git init //初始化一个可以被Git管理的仓库 ls -ah //查看该目录下所有的文件列表(包括被隐藏的文件) git add readme.txt //将readme.txt文件添加到Git仓库中(在执行该命令之前需要在该目录下创建一个readme.txt文件) git commit -m "description content" //提交之前使用git add命令添加的文件,-m参数用来添加对本次提交的文件的描述 //可以在commit之前多次调用add添加多个文件,使

将本地仓库托管到GitHub

在初始化仓库之前,要确认ssh key是否正确 ssh -T [email protected] 正确的结果如下 Hi username! You've successfully authenticated, but GitHub does not provide shell access. 在你的github上创建一个远程的respository ps:不要勾选Initilalize this repository ...,因为我们要在本地 init respository 然后切换到本地仓库

【Github教程】史上最全github使用方法:github入门到精通(转自eoeandroid.com)

本文来源:http://www.eoeandroid.com/thread-274556-1-1.html 另附经典教程网址 :http://wuyuans.com/2012/05/github-simple-tutorial/ Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前,包括Rubinius和Merb在内的很多知名项目都使用了Git.Git同样可以被诸如Cap

【Github教程】史上最全github使用方法:github入门到精通

[初识Github]首先让我们大家一起喊一句"Hello Github".YEAH!就是这样. Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前,包括Rubinius和Merb在内的很多知名项目都使用了Git.Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用.同样,eoe.cn客户端的源码也托管在github上

【Github教程】史上最全github用法:github入门到精通

原文 http://www.eoeandroid.com/thread-274556-1-1.html [初识Github] 首先让我们大家一起喊一句"Hello Github".YEAH!就是这样. Git是一个分布式的版本号控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其他项目中也取得了非常大成功,尤其是在Ruby社区中.眼下,包含Rubinius和Merb在内的非常多知名项目都使用了Git.Git相同能够被诸如Capistran

使用GitHub(三):使用VSCode+GitHub进行版本控制

使用GitHub(三):使用VSCode+GitHub进行版本控制 本文简单介绍使用VSCode+GitHub进行项目或者代码的版本控制.本文主要目的是对学习内容进行总结以及方便日后查阅. 详细教程和原理可以参考廖雪峰的Git教程或猴子都能看懂的Git教程. 本文版权归马涛涛所有. 本文所引用的图片和文字版权归原作者所有,侵权删. 如有错误请在下方评论区指出,欢迎积极讨论. 使用原理 1 上节回顾 上一篇博客详细介绍了使用 git 的三种方式 只在本地使用 将本地仓库上传到 GitHub 下载

Android基础入门教程——1.5.1 Git使用教程之本地仓库的基本操作

Android基础入门教程--1.5.1 Git使用教程之本地仓库的基本操作 Git是什么? 一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制系统 ①Git可以方便的在本地进行版本管理,如同你本地有一个版本管理服务器一样 我们可以选择在合适的时间将本地版本推送到统一的版本管理服务器 ②Git每次会提取整个代码仓库的完整镜像,相当于对整个代码仓库都进行了一次备份,这样计时版本服务器除了问题,我们可以直接采用本地仓库恢复!结合本地版本管理功能,远程版本管理服务器出问题了,我们依然

Git详细教程之创建本地仓库和连接Github仓库

首先要知道不只有代码,任何类型的文件都可以进行版本控制,版本控制很重要的一个特性就是你可以随时修改,比如git会记录你的任何操作,如果你想要回退到任何一个历史操作,你可以通过git轻松达到. 本地仓库的创建通常有两种方式: 第一种是自己手动创建: 在自己电脑硬盘中创建新的文件夹,打开然后用gitbash打开此文件夹,运行**git init**然后查看自己的文件夹会看见.git的隐藏文件夹.这是git配置相关的文件夹,不要随意修改它.之后就可以在自己新建的这个文件夹中添加项目包含的文件了. 第二

将本地项目托管到GitHub上

1.要托管到github,那你就应该要有一个属于你自己的github帐号,所以你应该先到github.com注册.打开浏览器在地址栏输入地址:github.com 填写用户名.邮箱.密码,点击Sign up即可简单地注册. 2.完成注册,进入GitHub平台,点击new repository新建一个新项目(你也可以加入到一个已有的项目). 3.新建项目的操作其实很简单,输入项目名就可以直接Create了如图 4.此时的界面相信大家很清楚了,点击右边栏的剪切板图标,记录下你的项目地址. 5.进入到