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

https://git-scm.com/downloads

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年,今天是七夕节,天气很好。节日快乐~!(◕‿◕✿)

原文地址:https://www.cnblogs.com/littlemonsterksn/p/13562632.html