[TOC]
注意: 本文是根据 廖雪峰的官方网站的Git教程 的学习笔记
『第一节课』创建版本库
初始化一个Git仓库
- 找一个合适的地方
- 创建一个文件夹
mkdir learning-git
- 进入该文件夹
cd
通过
git init
命令把这个目录变成Git可以管理的仓库12☁ learning-git git initInitialized empty Git repository in /Users/MiG/Documents/Learning/Git/learning-git/.git/注意: 此时仓库就创建好了,文件夹下会多了一个名为
.git
的文件夹📂添加一个
README.md
文件用
git add README.md
命令将README.md
将该文件添加到仓库1234☁ learning-git [master] ⚡ git commit -m "add README.md"[master (root-commit) a75f826] add README.md1 file changed, 2 insertions(+)create mode 100644 README.md
注意:
-m
后面输入的是本次提交的说明
『第二节课』查看修改信息
可以通过 git status
命令查看仓库的状态:
当我们没有进行修改的时候 输入 git status
可以看到如下输出
|
|
当我们进行一些修改之后:
|
|
当此时输入 git diff README.md
会输出如下信息:
|
|
此时,输入 git status
命令查看仓库的状态:
会输出如下信息:
提示信息没有提交
接下来,输入 git add README.md
:
没有提示
补充:
git add
的作用是将提交的文件的信息添加到索引库中
然后, 输入 git status
:
输出信息如下:
然后, 输入 git commit -m "modify README.md"
|
|
最后,输入最后一次 git status
:
|
|
本节课的补充:
git add
是将修改内容或者新文件添加到本地缓存区再用
git commit
将本地缓冲区的内容提交到本地仓库git add
的各种区别:git add -A // 添加所有改动
git add * // 添加新建文件和修改,但是不包括删除
git add . // 添加新建文件和修改,但是不包括删除
git add -u // 添加修改和删除,但是不包括新建文件
在
commit
前撤销add
:git reset <file> // 撤销提交单独文件
git reset // unstage all due changes
add/commit
前撤销对文件的修改:git checkout -- README.md // 注意, add添加后(同commit提交后)就无法通过这种方式撤销修改
『第三节课』版本退回
可以通过 git log
查看提交历史
|
|
还可以通过 git log --pretty=oneline
格式化输出提交信息:
|
|
48a04b0f26cc80ed8ad000b9b64675142f6d9bcd
是 commit id
版本号,不同于 SVN
的数字版本号,SHA1
计算出来的一个非常大的数字,用十六进制表示。
可以通过 git reset --hard HEAD^
命令退回上一个版本:
|
|
此时,通过
git log --pretty=oneline
可以看到输出的是如下的信息:a75f82682054606bdcec5c7f94590fff2d1de35c add README.md
也可以通过 git reset --hard commit_id
来实现要退回的版本
命令 git reflog
用来记录你的每一次命令
|
|
补充: Git在内部有个指向当前版本的
HEAD
指针,它指向的版本就是当前版本。
『第四节课』工作区与暂存区
文件夹📂 learning-git
就是一个工作区
版本库(Repository) 隐藏的文件夹📂 .git
就是一个版本库
如图所示:
图片来自: 廖雪峰的官方网站
前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
- 第一步是用
git add
把文件添加进去,实际上就是把文件修改添加到暂存区; - 第二步是用
git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
操作演示
『第五节课』Git管理的是修改
注意: 因为Git跟踪并管理的是修改,而非文件。
『第六节课』撤销修改
当没有提交到缓冲区时
通过使用命令 git checkout -- README.md
把 README.md
文件在工作区的修改全部撤销
一种是README.md
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是README.md
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
操作演示:
在
git status
之前有一次修改。
当将修改的文件提交到缓冲区的时候
首先,修改下文件。
用命令 git reset HEAD README.md
可以把暂存区的修改撤销掉(unstage),重新放回工作区
git reset
命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD
时,表示最新的版本。
# 接下来,还要 使用命令 git checkout -- README.md
来丢弃工作区的修改
操作演示:
然后通过 git checkout -- README.md
丢弃工作区修改
『第七节课』删除文件
首先添加一个文件 vim test_del.md
, 再随便添加点内容。
然后本地删除文件 rm -rf test_del.md
文件
输入 git status
可以查看现在的状态,在下面的操作演示图片里面