github相关指令学习

正在廖雪峰官网学习关于git的相关知识,已经不是第一次来学习,但是忘得太快,索性这次边学边记录笔记,加深记忆,方便后期查看

1、找到一个合适的地方,鼠标右键 Git Bush Here ,新建文件夹,mkdir mygit(mygit为我所建的文件夹的名字)

github相关指令学习

2、进入到当前文件夹下 cd mygit

github相关指令学习

3、pwd  显示当前目录

github相关指令学习

4 、git init  把这个目录变成Git可以管理的仓库

github相关指令学习

此时git仓库已经建好,而且会告诉你这还少空的仓库,且在mygit文件夹下,会自动生成一个.git的目录,

这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

github相关指令学习

5、在mygit文件下编写一个readme.txt文件,内容如下:

Git is a version control system.
Git is free software.
在命令控制行输入 git add reame.txt ,告诉git把文件添加到仓库

github相关指令学习

执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。

6、git commit告诉Git,把文件提交到仓库:

github相关指令学习

-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

为什么Git添加文件需要addcommit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
即前期步骤为:

  初始化一个Git仓库,使用git init命令。

  添加文件到Git仓库,分两步:

  • 第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;

  • 第二步,使用命令git commit,完成。

7、我们已经成功添加并提交了readme.txt文件,我们继续修改readme.txt文件,改成如下内容:
Git is a distributed version control system.
Git is free software.

8、输入

github相关指令学习
git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
9、输入git diff,查看改变的详情

github相关指令学习

10、已经知道了改变了哪里,放心添加add

github相关指令学习

同样,没有任何提示

11、git commit之前,我们再运行git status看看当前仓库的状态:

github相关指令学习

git status告诉我们,将要被提交的修改包括readme.txt,下一步,就可以放心地提交了:

12、git commit -m 提交

github相关指令学习

13、提交后,我们再用git status命令看看仓库的当前状态:

github相关指令学习

Git告诉我们当前没有需要提交的修改,而且,工作目录是干净(working tree clean)的。

 14、现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下:

Git is a distributed version control system.
Git is free software distributed under the GPL.

github相关指令学习

每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit

一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。

现在,我们回顾一下readme.txt文件一共有几个版本被提交到Git仓库里了:

版本1:wrote a readme file

Git is a version control system.
Git is free software.

版本2:add distributed

Git is a distributed version control system.
Git is free software.

版本3:append GPL

Git is a distributed version control system.
Git is free software distributed under the GPL.

当然了,在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看:

github相关指令学习

git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed

最早的一次是wrote a readme file。 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

github相关指令学习

现在我们启动时光穿梭机,准备把readme.txt回退到上一个版本,也就是“add distributed”的那个版本,怎么做呢?

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

现在,我们要把当前版本“append GPL”回退到上一个版本“add distributed”,就可以使用git reset命令:

github相关指令学习

此时的readme.txt的内容已经回到add distributed版本

github相关指令学习

此时,我们再用git log看看日志

github相关指令学习
 
 

这个时候已经看不到append GPL版本了

此时,如果再想回到append GPL版本,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找,找到那个append GPLcommit id是2e2137...,于是就可以指定回到未来的某个版本:

github相关指令学习

再看readme.txt 里的内容,

github相关指令学习

已经回到append GPL版本了

现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?

 在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到add distributed版本时,再想恢复到append GPL,就必须找到append GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:

 github相关指令学习

小结:

github相关指令学习

15、工作区和暂存区

我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

俗话说,实践出真知。现在,我们再练习一遍,先对readme.txt做个修改,比如加上一行内容:

github相关指令学习

然后,在工作区新增一个LICENSE文本文件(内容随便写)。

 然后,git status查看一下状态:

github相关指令学习

Git非常清楚地告诉我们,readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked

 使用两次命令git add,把readme.txtLICENSE都添加后,用git status再查看一下:

github相关指令学习

github相关指令学习

git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。

github相关指令学习

一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的:

github相关指令学习