1、学习网站
2、git简介
如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:
想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去
于是你想,如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?
这个软件用起来就应该像这个样子,能记录每次文件的改动:
a 张三
删除了软件服务条款5
7/12 10:38b张三
增加了License人数限制
7/12 18:09这样,你就结束了手动管理多个“版本”的史前时代,进入到版本控制的20世纪
3、Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了
4、集中式管理系统&分布式管理系统
集中式管理系统:缺点必须联网,cvs,svn
分布式管理系统:不必联网、强大的分支功能,git、促使Git诞生的BitKeeper、还有类似Git的Mercurial和Bazaar
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
5、安装git
window安装:msysgit是Windows版的Git,从https://git-for-windows.github.io下载(网速慢的同学请移步国内镜像),然后按默认选项安装即可
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
6、创建版本库
版本库又名仓库,英文名repository
用ls –ah
命令就可以看见当前目录下有个.git的文件夹创建文件 vi 文件名a.txt,会自动创建/touch a.txt
初始化一个Git仓库,使用
git init
命令。添加文件到Git仓库,分两步:
第一步,使用命令
git add <file>
,注意,可反复多次使用,添加多个文件;第二步,使用命令
git commit –m “提交的注释信息”
,完成
7、修改文件查看状态,以及文件变更记录(时光穿梭机)
-
要随时掌握工作区的状态,使用
git status
命令。如,已经重新编辑readme.txt文件 -
$ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: readme.txt
-
如果
git status
告诉你有文件被修改过,用git diff
可以查看修改内容。 -
$ git diff readme.txt diff --git a/readme.txt b/readme.txt index 46d49bf..9247db6 100644 --- a/readme.txt +++ b/readme.txt @@ -1,2 +1,2 @@ -Git is a version control system.此行为原来的内容 +Git is a distributed version control system.此行为修改后的内容 Git is free software.
-
8、版本回退,穿到过去未来
-
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id/head/head^
。-
上一个版本就是
HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
-
-
穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本。 -
要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本
-
9、工作区和暂存区
git add时将文件存到暂存区,stage
git commit时,将暂存区的文件提交到master主分支
每次修改,如果不
add
到暂存区,那就不会加入到commit
中。第一次修改 ->
git add
-> 第二次修改 ->git add
->git commit
10 撤销修改
未git add前撤销到上个版本所有的修改:git checkout -- readme.txt
git add文件到暂存区后,如果想撤销修改:git reset HEAD readme.txt
git commit后,想要回退到上个版本,只能git reset – hard HEAD^
可以时时通过git status来判断提示使用的命令
11、删除文件
$ rm test.txt
git上删除文件
$ git rm test.txt
$ git commit -m "remove test.txt"
未add前恢复文件
$ git checkout -- test.txt
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
12、远程仓库
待续。。。。。。https://github.com git官网登录,username:chenmeng789,email:chenmeng201209@yeah.net
Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。
好在这个世界上有个叫GitHub的神奇的网站,从名字就可以看出,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。
第1步:创建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上免费托管的Git仓库,任何人都可以看到喔
电脑多个git账户,一个gitlab公司,一个github自己,两个邮箱,生成第二个key时会覆盖第一个key,可以通过配置文件解决http://www.jianshu.com/p/f7f4142a1556
比如测试github
ssh -vT git@github.com
,显示success,证明成功