Git
Git简介
git是一个很强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势。
安装Git
在Linux上安装Git
1
sudo apt-get install git
在MacOS上安装Git
1
brew install git
在Windows上安装Git
直接在官网下载。官网下载地址
安装完毕后的配置
1
2
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
用了--global
参数,表示这台机器上的所有仓库都会使用这个配置,也可以去掉该参数,对当前目录下的仓库指定用户名和邮箱。
创建版本库
版本库又叫仓库,英文名是repository,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻来进行“还原”
创建版本库/仓库:
1
2
3
mkdir learngit
cd learngit
git init
其中mkdir
命令用来创建目录,cd
进入目录,git init
来初始化仓库
版本库/仓库创建好了,目录下面会多出.git目录,这个目录是Git来跟踪管理版本库的。
提交修改
添加readme.txt文件,加入以下内容:
1
2
Git is a distributed version control system.
Git is free software.
使用git status
可以让我们时刻掌握仓库的状态。
使用git diff {filename}
可以查看文件做了什么修改。
使用git add {filename}
可以将文件修改加入暂存区。
使用git commit -m #{comment}
将暂存区修改提交到版本库,其中comment为提交说明
版本回退
如果你不断对文件进行修改,然后不断提交修改到版本库。Git里,当我们觉得文件修改到一定程度的时候,可以“保存一个快照”,这个快照在Git中被称为commit
。一旦我们把文件改乱了,或者误删了文件,还可以从最近的一个commit
恢复。
使用git log
可以查看我们提交修改的历史记录,--pretty=oneline
参数可以精简输出。
我们可以在历史记录中看到一个SHA1计算出来的一个非常大的数字,用十六进制表示,每一个提交一个新版本,Git就会把它们串成一条时间线,并且赋予一个唯一的版本号。
使用git reset --hard HEAD^
可以回退到上一个版本
使用git reset --hard {commit_id}
可以回退到指定版本,comment为版本号
使用git reflog
查看你的每一次命令,可以通过该命令,获取操作前的版本号,然后回退到该版本
工作区和暂存区
工作区
就是在电脑里能看到的目录。
版本库
工作区有一个隐藏目录.git
,这个就是Git的版本库
Git的版本库里存了很多东西,其中最重要的就是暂存区(state)。还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针HEAD
前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master
分支,所以,现在,git commit
就是往master
分支上提交更改。
你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
我们修改readme.txt文件和添加LICENSE文件并且使用git add
将文件添加到暂存区。暂存区的状态变成了这样。
然后使用git commit
提交代码到版本库,版本库就成了这样。
管理修改
第一次修改 -> git add -> 第二次修改 -> git commit
Git管理的是修改,当使用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。
提交后,用git diff HEAD -- readme.txt
命令可以查看工作区和版本库里面最新版本的区别