史上最浅显易懂的Git教程!
本教程只会让你成为Git用户,不会让你成为Git专家。很多Git命令只有那些专家才明白(事实上我也不明白,因为我不是Git专家),但我保证 这些命令可能你一辈子都不会用到。既然Git是一个工具,就没必要把时间浪费在那些“高级”但几乎永远不会用到的命令上。一旦你真的非用不可了,到时候再自行Google或者请教专家也未迟。
Git是什么?
Git是目前世界上最先进的分布式版本控制系统(没有之一)。
Git有什么特点?简单来说就是:高端大气上档次!
Git的诞生
很多人都知道,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了。
github是一个网站,给用户提供git服务。这样你就不用自己部署git系统,直接用注册个账号,用他们提供的git服务就可以。
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下
有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接 跳到下一步。如果没有,打
开Shell(Windows下打开Git Bash),创建SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”⻚页⾯面:
然后,点“Add SSH Key”,填上任意Title,在Key⽂文本框⾥里粘贴id_rsa.pub⽂文件的内容:
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而
不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只
有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你⼀一会⼉儿在公司提交,一会儿在
家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送
了。
最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能
改)。所以,不要把敏感信息放进去。
如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变
成私有的,这样别人就看不见了(不可读更不可写)。另 一个办法是自己动手,搭一个Git
服务器,因为是你自己的Git服务器,所以别人也是看不见的。
Windows下要使用很多Linux/Unix的工具时,需要Cygwin这样的模拟环境,Git也⼀一样。
Cygwin的安装和配置都比较复杂, 就不建议你折腾了。不过,有高人已经把模拟环境和
Git都打包好了,名叫msysgit,只需要下载一个单独的exe安装程序,其他什么也不用装,
绝对好 用。
msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即
可。
安装完成后,在开始菜单⾥里找到“Git”->“Git Bash”,蹦出⼀一个类似命令⾏行窗⼝口的东
⻄西,就说明Git安装成功!
安装完成后,还需要最后一步设置,在命令行输入:
git config --global user.name "Your Name" git config --global user.email "email@example.com"
因为Git是分布式版本控制系统,所以,每个机器都必须⾃自报家⻔门:你的名字和Email地址。
你也许会担⼼心,如果有⼈人故意冒充别⼈人怎么办?这个不必担⼼心,⾸首先我们相信⼤大家都是善良
⽆无知的群众,其次,真的有冒充的也是有办法可查的。
注意git config命令的--global参数,⽤用了这个参数,表⽰示你这台机器上所有的Git仓库都会
使⽤用这个配置,当然也可以对某个仓库指定不同的⽤用户名和Email地址。
用命令git clone克隆⼀一个本地库:
git clone https://github.com/Ocean-Openstack/01-openstack-homework.git
创建自己文件夹
cd Day4 mkdir lixh cd lixh touch zuoye.py
第⼆二步,通过git init命令把这个⺫⽬目录变成Git可以管理的仓库:(还在在自己目录下)
git init
瞬间Git就把仓库建好了,⽽而且告诉你是⼀一个空的仓库(empty Git repository),细⼼心的
读者可以发现当前⺫⽬目录下多了⼀一个.git的⺫⽬目录,这个⺫⽬目录是Git来跟踪管理版本库的,没事千
万不要⼿手动修改这个⺫⽬目录⾥里⾯面 的⽂文件,不然改乱了,就把Git仓库给破坏了。
第一步,用命令 git add 告诉Git,把⽂文件添加到仓库:
git add .
执行上⾯面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明
添加成功。
第二步,用命令 git commit 告诉Git,把⽂文件提交到仓库:
git commit -m "first commit"
简单解释一下 git commit 命令, -m 后面输入的是本次提交的说明,可以输入任意内容,当然
最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
把本地master分支的最新修改推送至GitHub
git push -u origin master
删除文件
rm -rf 2.txt
git add .
git commit -m "del file"
git push -u origin master
第二次再提交作业
还是最后三步:
1.还是在自己的家目录
cd lixh touch zuoye2.py #模拟作业文件
2.用命令 git add 告诉Git,把⽂文件添加到仓库:
git add .
执行上⾯面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明
添加成功。
3.用命令 git commit 告诉Git,把⽂文件提交到仓库:
git commit -m "first commit"
把本地master分支的最新修改推送至GitHub
git push -u origin master
当别人在别人自己的目录提交了文件的时候,你本地目录却没有改变,或者也就是其他人在自己的目录提交了作业,当你比其他人交的晚或者最后一天发现写错想修改怎么办?
举个栗子:
张三昨天晚上交了一个作业,GitHub上是这样的:
而你本地却没有:
你会发现按照第二次交作业步骤提交会报错:
这是为啥呢?
这是因为远程仓库(github)和你本地结构不一样。(这不废话吗?我TM也知道啊!)
怎么解决呢?
把远程仓库和本地结构合并一下(把远程服务器github上面的文件拉下来)
官方是这么说的:取回远程主机某个分支的更新,再与本地的指定分支合并
git pull origin master
执行过程中呢会出现类似于一个vim的界面,跟vim一样。直接输入:q退出即可
再执行 上面那三条命令(第二次交作业) 即可
总结:也就是下次交作业(提交代码的时候)先git pull一下,把代码clone下来,再提交
pycharm的github的使用
1.file---default settings
2.搜索git (File->Settings->Version Control->Github)
3.选择Git安装路径
4.选择github,在旁边输入你github的用户名和密码,可以点击”test”测试一下,如果出现:Connection successful
,则代表连接成功了。
5.由于咱们已经有了项目,直接拉到本地修改即可
项目已经拉了下来
6.修改后的文件提交
比如我在lixh下修改test2文件(蓝色代表修改的部分,绿色代表新增部分)
7.对修改后的文件或目录点击右键:Git—>Add,先把文件放入暂存区
8.对修改后的文件或目录点击右键:Git—>Commit File,把刚才add放在暂缓区的文件提交。
9.填写提交信息,和git commit
-
m
"first commit"这条命令中的“first commit”是一个意思,就是本次提交的说明。然后提交和推送,选择commit and push
提交成功。可以去github上查看有没有提交成功
为了避免commit的时候出现问题,上传之前还是先要pull一下