Git \Github使用文档(下载文档

由于图片没有进行显示,所以需要学习得伙伴进行下载文档进行查阅!

作者:baoqiang1018@126.com

概述:该文档还有很多没有进行叙述,因为时间原因,所以不是很完整,比如git clone,git diff等一些重要操作,后续会进行补充和eclipse集成git,idea集成git的使用说明

一、     GIT的概述

         git是一个分布式的版本控制系统,最初有linux Tovalds编写,初衷是为了管理linux内核代码的管理,在推出之后,git在其他项目中取得了很大的成功,尤其是在Ruby社区中,目前,包括Rubinius和Merb在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。同样,eoe.cn客户端的源码也托管在github上。

         Git的诞生其实是一个很偶然的机会,因为linus的linux代码是通过全世界的志愿者进行参与的,所以linus对于这种代码的手工合并坚持了10年之久,10年的发展,linus不可能在手工合并代码,这工作量可不小,当时也有版本控制的系统,比如svn和cvs,但是linus不喜欢,坚决反对,是因为速度比较慢,而且需要联网的前提下进行,虽然当时有商用的svn或cvs的服务器,但是linux是一个免费的开放系统,如果托管在收费的系统上,与linux的完全开源精神不符。于是乎linus选择了一款bitKeeper版本控制系统,安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。这下linus进入了一个尴尬的境地,所以促使linus进行了自主研发了GIT分布式版本控制系统。

         GitHub可以托管各种git库,并提供一个web界面,但与其它像SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。(MySpace全球目前第二大社交网站,如facebook)


一、     Git的使用

1.     Git安装(git for windows)

         Git的官方下载地址:http://msysgit.github.io/

         下载完成后,进行傻瓜式安装即可。

2.     Git的组成

         Git库中有三部分组成,git库就是.git目录,其中存放的是我们所提交的文档索引内容,Git可基于文档索引内容对所管理的文档内容进行追踪,从而实现版本控制,.git目录位于工作目录内。

1)    工作目录

         用户本地的目录

2)    Index(索引)

         将工作目录下的所有文件(包括子目录)生成快照,存放在一个临时的存储区域,Git称该区域为索引。

3)    仓库

         将索引通过commit进行提交到仓库中,每一次提交意味着版本的一次更新。

3.     Git的初始化事项(所有红色字体都表示可以替换字样)

1)    Git的初始化配置
a)      配置git仓库的使用人姓名

         $ gitconfig --global user.name "baoqiang"

b)     配置git仓库的使用人email

         $ gitconfig --global user.email "baoqiangXXXXXXXX@126.com"

2)    Git文档的忽略机制

         工作目录中希望有些文件不需要git管理的,譬如程序编译生成的中间文件等,git提供了文档的忽略机制,可以将目录中不希望接受git管理的文档信息写到同一目录下的.gitignore文件中。

         具体操作后面将会讲到。

Git与Repo的比较

         Git操作一般对应一个仓库,而Repo操作一般对应一个项目,即一个项目会有若干个仓库组成。

3)    Git的本地操作基本命令
a)      git init

         通过git init命令可以进行初始化git,在当前目录下生成.git的子目录,所有的文件变化信息都会放在此目录底下,而不像cvs、svn一样,在每一个目录下生产cvs、svn目录,

         在.git目录底下会有一个config文件,可以修改里面的配置项。

b)     git add

         将当前目录中更改或者新增的文件加入到git的索引中,加入到git索引中就相当于记录到了版本历史中,也就是提交之前所要执行的一步。

         可以进行递归添加,如果添加一个目录,会通过递归添加该目录下的子目录,一致有三种添加的方式,首先在当前目录下提交如下文件:

添加目录:

c)      git rm

从当前的工作目录和索引中删除文件。(具体命令与add命令参数一致)

可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件。例如: 
       git rm –r *
(进入某个目录中,执行此语句,会删除该目录下的所有文件和子目录) 
       git rmf1    (
删除文件f1,包含本地目录和index中的此文件记录
       git rm--ached f1 (
删除文件f1,不会删除本地目录文件,只删除index中的文件记录;将已经git add的文件removecache,这样commit的时候不会提交这个文件,适用于一下子添加了很多文件,却又想排除其中个别几个文件的情况.) 

d)     git commit

         提交当前工作目录下的修改内容。直接通过git commit会提示添加注释,通过以下命令就可以在提交的时候进行添加注释了。

Git commit还有一个-a的参数,就是将没有通过gitadd的文件进行强行一致提交,但是不推荐这样使用。每一次提交,git就会为全局代码建立一个唯一的commit的标识代码,用户可以通过git reset命令恢复到任意一次提交时的代码。

e)     git status

         查看版本库的状态,可以得知哪些文件发生了变化,哪些文件还没有添加到git库中等等,建议每次commit前都要通过该命令确认状态。

         最常见的误操作就是,修改了一个文件,没有调用git add通知git库该文件已经发生了变化,而commit完成以后,误以为改文件已经被add,后期又进行修改或者删除,而实际上该文件没有托管在git管理上,所以导致该文件丢失的情况。如果调用git status命令,格外要注意“changed but not updated”的文件,这些文件都是与上次commit之前相比发生了变化,但是此次没有进行git add操作的文件。

f)       git log

         查看历史日志,包含每次的版本变化,每次版本变化对应一个commit id。

而进行展示的commit 71e1b9b386cf26e2dec4ec39b7771629e8a5c155,也就是对应的版本号,如果要查看具体信息,可以通过git show -71e1b9b386cf26e2dec4ec39b7771629e8a5c155,来查看此次版本的具体信息:

git merge

git diff

git checkout

git-ls-files

git mv

git branch

git rebase

git reset

git revert

git config

git show

git tag

Git


一、     GitHub的使用

         官方网站:https://github.com/

         Github其实也就是git仓库的托管服务。所以只要注册一个github的账号,就可以拥有一个git的远程仓库。

1.     注册账号及创建仓库

         首先进入网站,点击Signup for GitHub进行注册,然后登录系统:


        

注册功能就完成了,然后进行创建仓库,右上角点击+下拉:


进入仓库页面,根据自己的情况进行填写,具体填写说明如下:


点击create repository新建成功了!

1.     创建ssh key

         由于git和github之间的传输是通过ssh加密的,所以需要创建ssh    

         1.查看是否已经有了ssh密钥:cd ~/.ssh

         如果没有密钥则不会有此文件夹,有则备份删除

         2.生存密钥:

         $ssh-keygen -t rsa -C “baoqiang1018@126.com”

         按3个回车,密码为空。

                   Youridentification has been saved in /home/tekkub/.ssh/id_rsa.

                   Yourpublic key has been saved in /home/tekkub/.ssh/id_rsa.pub.

                   Thekey fingerprint is:

                   ………………

最后得到了两个文件:id_rsa和id_rsa.pub


注意:生成ssh默认生成在cd ~/.ssh,要进行查看具体目录结构,可以在Git Bash中进行查看,具体步骤:


然后在该目录底下会找到两个文件。


此时,生成的ssh key就完成了。


1.     登录GitHub添加ssh

         登录github,然后点击setting,再点击sshsetting进行设置ssh公钥(将你当前目录下的id_rsa.pub中的公钥复制到ssh setting的key中即可)

点击Add key则添加成功!

然后通过Git Bash就可以进行访问github了:


通过ssh –T git@github.com 如果出现以下说明即连接成功。


         为什么github需要sshkey呢,因为github需要识别出,是你推送的数据还是别人推送的。而git支持ssh协议,所以只要你给github提供公钥,github就可以知道你的身份。

         Github是可以支持多个key的,所以你可以再不同的电脑进行生产不同的key,然后添加在github上,这样,你就可以在不同电脑上进行推送数据了。

         Github现在支持免费的git仓库是共有的,如果你不想公开你的项目,就可以交点保护费给github,将共有改成私有即可,或者可以再自己的服务器上搭建git服务器。

1.     使用github

1)    设置用户名和emil

         将本地仓库上传到github,在此之前需要设置username和email。因为github每次会记录以下他们来标识是谁提交的。

$ git config --global user.name "yourname"

$ git config --global user.email your_email@youremail.com

2)    2、将本地仓库上传到github

         设置完用户名和email以后,在某个目录下新建自己的gitRepo,比如本人新建在E:\github\gitRepo,然后再该目录下打开Git Bash,初始化git,然后上传至github通过命令:


如果没有提示信息就成功了,linux下没有提示信息就是成功。

然后打开当前目录下的.git目录,打开config文件,则会发现多了一项配置。

[remote "origin"]

         url= git@github.com:baoqiang/gitRepo.git

         fetch= +refs/heads/*:refs/remotes/origin/*

注意:baoqiang是指你的github的用户名,而gitRepo是github的工程名。

3)    提交、上传  

         新建一个test1.txt文件,然后上传到github,首先提交的git本地


        然后将文件推送到github,通过命令:


,如果想将github的仓库获取到本地git仓库,通过命令:


 修改完代码以后,可以通过git status来查看文件的差别,使用git add添加想要进行commit的文件,也可以通过git add –i来智能添加文件,之后通过git commit进行提交修改,git push上传到github。


4)    Gitignore文件

         Gitigore可以从单词就可以看出来,是git忽略,顾名思义就是告诉git需要忽略的文件,这是一个重要而且实用的文件,一般写完代码之后,将编译,调试的测试代码或者中间的一些执行代码,不需要提交到git管理的,就可以通过该文件进行配置,如果用git add –A来添加的话,会把他们都添加进去,是因为手动一个一个添加会很麻烦,这时我们就需要.gitignore了,比如一般java项目,我的.gitgnore会这么写:

.classpath

.project

.springBeans

.settings/

target/

*.iml

.idea/

创建gitigonre文件可以复制一个gitignore文件,也可以新建一个,在windows操作的话,建议是通过新建,因为复制的文件,在进行git add的时候会出现如下错误,解决方案,自己进行百度解决,我推荐使用自己新建gitignore,通过linux操作进行添加文件和内容:


新建.gitignore文件:


新建完成以后,在进行编辑忽略文件,如果对linux操作比较熟悉的话,可以通过vi进行编辑。

编辑完成后,进行查看:


这样就添加成功了,添加完以后,一定要进行提交到git和github’仓库,具体提交方法,不在熬述!


5)    Tag

         Tag是用来指向软件开发中的一个关键时刻,比如版本号更新的时候可以新建一个“v2.0”,”v3.0”之类的标签,这样在以后回顾的时候会比较方便,tag的操作比较简单,查看tag,创建tag,删除tag,验证tag以及共享tag。

a)      查看tag

b)     创建tag

对以前的提交信息进行加tag,可以通过如下的方式进行添加:


c)      删除tag

d)     验证tag

e)     共享tag

我们在执行git push的时候,tag是不会上传到服务器上的,比如现在的github,换件tag到git push,在github网页是看不到这些信息的,可以通过以下的方式,进行共享tag

 



参考资料:

廖雪峰的官方网站

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/

git for windows官方网站:

http://msysgit.github.io/

git – 简易使用指南

http://www.bootcss.com/p/git-guide/

http://blog.csdn.net/cdkd123/article/details/8959484

还有好多blog的贡献



Logo

更多推荐