Git学习笔记(一)
本系列学习笔记参考廖雪峰老师的Git教程,地址:https://www.liaoxuefeng.com/wiki/896043488029600
Git学习笔记(一) https://www.cnblogs.com/littlemonsterksn/p/13562632.html
Git学习笔记(二) https://www.cnblogs.com/littlemonsterksn/p/13583004.html
Git学习笔记(三) https://www.cnblogs.com/littlemonsterksn/p/13583197.html
Git学习笔记(四) https://www.cnblogs.com/littlemonsterksn/p/13593841.html
Git学习笔记(五) https://www.cnblogs.com/littlemonsterksn/p/13598243.html
一、在Windows上安装Git
1. 在官网下载Git
2. 安装好后,查询Git版本
3. 设置名字和邮箱
$ git config --global user.name "Jessiegit" $ git config --global user.email "xxxxx @gmail.com"
二、创建一个版本库
1. 选择一个合适的地方,创建一个空目录。本文在G盘
$ mkdir learngit $ cd learngit/ $ pwd
2. 通过git init把这个目录变成Git可以管理的仓库,也就是初始化仓库
初始化完成后可以发现当前目录下多了一个.git目录(一般不要手动修改里面的文件)。这个目录默认是隐藏的,用ls -ah可以看到
$ git init $ ls -ah
3. 编写一个readme.txt文件
内容如下:
Git is a version control system. Git is free software.
把该文件放到learngit目录下
4. 用git add,把文件添加到仓库
$ git add readme.txt
用git commit,把文件提交到仓库:
$ git commit -m "wrote a readme file"
git commit命令,-m后面输入的是本次提交的说明,最好是有意义的内容
git commit命令执行成功后显示:
1 file changed:1个文件被改动(新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容)
三、修改文件并查看状态
1. 修改readme.txt文件
改成如下内容:
Git is a distributed version control system. Git is free software.
用git status命令看看结果:
$ git status
git status可以查看仓库当前的状态,上面的命令输出表示:readme.txt被修改过了,但还没有准备提交的修改
用git diff这个命令,可以查看具体修改了什么内容
$ git diff
2. 提交修改和提交新文件
和之前是一样的两步,第一步是git add:
$ git add readme.txt
在执行第二步git commit之前,再运行git status查看当前仓库的状态:
$ git commit -m "add distributed"
提交后,再用git status查看仓库的当前状态:
Git显示当前没有需要提交的修改,而且,工作目录是干净(working tree clean)的
四、版本回退
1. 修改readme.txt文件
Git is a distributed version control system. Git is free software distributed under the GPL.
然后提交:
$ git add readme.txt $ git commit -m "append GPL"
用git log命令查看历史记录:
如果觉得输出信息太多,看得眼花缭乱,可以加上--pretty=oneline参数:
$ git log --pretty=oneline
2. 回退到上一个版本
上一个版本就是HEAD^,上上一个版本就是HEAD^^
往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
要把当前版本append GPL回退到上一个版本add distributed,可以使用git reset命令:
$ git reset --hard HEAD^
3. 回退到指定版本
用git log查看现在版本库的状态,找到append GPL的commit id,就可以指定回到某个版本
再查看readme.txt的内容:
$ git reset --hard 79690e $ cat readme.txt
4. 恢复到新版本
若回退到了某个版本,又想恢复到新版本,但找不到新版本的commit id,
可以使用git reflog,它记录每一次命令:
$ git reflog
append GPL的commit id是79690e5,现在,就又可以恢复到新版本了
$ git reset --hard 79690e $ cat readme.txt
小结:
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本
五、工作区和暂存区
从前面学习的内容可知,把文件往Git版本库里添加的时候,是分两步执行的:
第一步:用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步:用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改
可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改
Git管理的文件分为:工作区,版本库,版本库又分为暂存区stage和暂存区分支master(仓库) 工作区>>>>暂存区>>>>仓库 git add把文件从工作区>>>>暂存区,git commit把文件从暂存区>>>>仓库, git diff查看工作区和暂存区差异, git diff --cached查看暂存区和仓库差异, git diff HEAD 查看工作区和仓库的差异, git add的反向命令git checkout,撤销工作区修改,即把暂存区最新版本转移到工作区, git commit的反向命令git reset HEAD,就是把仓库最新版本转移到暂存区。 git status就是单纯看工作区情况
1. 先对readme.txt修改,再添加LICENSE文件
2. 用git status查看状态,并添加readme.txt和LICENSE
Git显示readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked
现在,使用git add,把readme.txt和LICENSE都添加后,用git status再查看一下:
所以,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支
一旦提交后,如果又没有对工作区做任何修改,那么工作区就是“干净”的
------
又到了2020年,今天是七夕节,天气很好。节日快乐~!(◕‿◕✿)