简单认识Git与GitHub
Git的历史:
创始人:linus (linux之父)
官网:https://git-scm.com/
很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。
Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?
事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!
你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。
不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。
安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。
Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:
Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。
Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。
历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。
Git是什么?
Git是一款免费开源的分布式版本控制系统,用于敏捷高校的处理任何或大或小的项目。
GitHub是什么?
GitHub是一个面向开源及私有的软件项目的托管平台,因为只支持Git最为唯一的版本库格式进行托管,故名GitHub
GitHub,于2008年4月10日正式上线,他为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括JQuery、PHP、Raby、Hadoop、HBase、SPark等......
Git于svn的对比:
1.Git是分布式的,svn是集中式的
2.Git每个历史版本存储完整的文件,svn存储文件的差异
3.Git可离线完成大部分的操作,svn则必须于中央服务器进行网络交互
4.Git有着优雅的分支和合并功能、
5.Git有着更强的撤销修改和修改版本历史的能力
6.Git速度更快,效率更好
Git的基本命令
1.帮助文档:git help
2.查看Git所有安装的地方: which -a git
3.查看git版本:git version
4.填写用户名:git config --global user.name +用户名(自己起)
5.填写邮箱:git config --global user.email +邮箱(必须是GitHub的邮箱)
6.添加用户名:git config --global add user.name +用户名(自己起)
7.获取当前属性:git config --get user.name
8.获取所有属性:git config --list --global
9.删除用户名:git config --global --unset user.name+指定删除的用户名
10.当只有一个用户名的时候,可以不加指定用户名删除:git config --global --user.name
Git命令的基本使用:
1.创建仓库:git init(在电脑文件夹里,会出现.git文件夹,隐藏的)
2.创建文件夹:mkdir+文件夹名称
3.创建文件:touch+文件名称+扩展名(后缀)
4.查看当前版本库的状态:status
5.使用git add命令告诉git,把文件添加到仓库(放到暂存区):git add + 文件名称
6.使用git commit命令告诉git,把文件提交到仓库(放到历史区,本地仓库):commit -m ' 注释'
将文件提交到本地仓库需要两部:
第一步:add
第二部: commit
1.对比文件内容:git diff +文件名称
2.查看历史提交的记录:git log ,出现的长串是:commit id(版本号)SHA-1 Hash计算出来的一个16进制
3. 查看历史提交的记录(漂亮的在一行显示,指定某个文件了)不加文件名称则(全部显示) :log --pretty=oneline +文件名称
Git的基本操作:
什么是版本库?
英文名repository,又名仓库,可以简单理解一个目录,这个目录里面的所有文件都可以被Git管理
1.创建版本库:git init
版本回退:
前提:知道当前版本是那个,HEAD表示当前版本
回到上一个版本:HEAD^ 一个^就表示前一个版本,如果N个前版本可以使用HEAD~N
1.回退:git reset --hard HEAD^
2.如果回退之后反悔了,又想回到之前的那个版本:git reset --hard +串码
3.获取串码可以通过:git log +文件名称
4.版本穿梭,可以使用 git log 查看提交历史,以便正确回退/穿梭到那个版本:git reset
5.查看命令历史,以便确定回到过去/未来的那个版本:git reflog
什么是修改:新增一行,修改几个字符,删除一行,新增文件,删除文件,Git管理的是修改,而不是文件
撤销修改:
1.没有提交到暂存区(其实就在工作区):git checkout --文件名
2.已经提交到暂存区,分两步:
第一步:git reset HEAD 文件名
第二步:git checkout --文件名
添加到暂存区/历史区(本地仓库):
1.暂存区:git add +文件名
2.历史区:git commit -m ' 注释'
注意:文件只有从工作区先添加到暂存区,才能添加到历史区,因为只有暂存区的文件,才可以添加到历史区,工作区不生效
删除文件:
1.手误删除,如何恢复:git checkout --(文件名)
2.真删除本库的文件(两步骤):
第一步:git rm (想删除的文件名)
第二部:git commit -m ' 注释'
远程操作
第一种方法:
在本地生成ssh
输入命令 ssh -keyyen -t rsa -C 'GitHub邮箱号'回车再输入y(yes)继续一路回车,之后查看文件输命令:ls回车输入命令:ls-la回车查看隐藏文件,输入cd.ssh/回车查看cd目录,
会出现id rsa (私钥),id -rsa.pub (公钥)再次输入命令:cat ssh -keygen -t rsa -C '邮箱号'回车再输入命令: cat id -rsa .pub(公钥)回车,会出现长串好几行,复制下来,然后打开GItHub,
点击账号设置==》settings==》ssH and GPG keys==》New SSH key==》Titlec(自己命名)==》把复制的长串粘贴到key的框框里==》Add SSH key==》输入GitHub密码,这时候ssh已经和
GitHub交互了==》账号设置左边有个+号==》New repository(新建仓库)==》给库命名==》Create repository(创建)之后会出现框框,最上面点击SSH后找到带有push的框框,
复制里面的命令,先去git执行第一条在执行第二条,再去GitHub刷新,会出现本地本地操作的记录,也就是说把本地仓库的文件已经成功的提交到GitHub上
注意:
第一次提交就是输入第二次命令,命令里有-u,如果在本第修改后,再提交把-u去掉
第二种方法:
1.GitHub上创建远程库 2.使用命令 git clone 命令克隆远程库
步骤:
在GitHub上新建远程库,new reposcitory==》给库命名==》勾上最后一行(意思是初始化,创建一个文件)==》creade repository (创建)==》clone or down load ==》复制长串==》
在git输入git clone+复制的长串,这时一个空的文件就出来了,操作就可以了,但是没有提交,要想提交,必须添加到暂存区==》历史区==》git push origin master==》去GitHub刷新,
出现文件,成功提交。
建议使用第二种
理解git的三个区: