[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 可以查看现在的状态,在下面的操作演示图片里面
当你也要将版本库中的文件删除的时候,就可以输入 git rm test_del.md 将其删除啦
当你是操作失误的时候, 可以输入 git checkout --test_del.md 将版本库中的文件拉取出来,覆盖本地的版本
操作代码
