# 基本操作

# git init——初始化仓库

$ mkdir git-tutorial
$ cd git-tutorial
$ git init
Initialized empty Git repository in /Users/hirocaster/github/github-book
/git-tutorial/.git/

如果初始化成功,执行了git init命令的目录下就会生成.git 目录。这个.git 目录里存储着管理当前目录内容所需的仓库数据,称为工作树

# git status——查看仓库的状态

$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

当前处于master分支

$ touch README.md

Administrator@PC-ybc MINGW64 /f/study/gitTest (master)
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        README.md

nothing added to commit but untracked files present (use "git add" to track)

添加了README.md文件,git status显示出了变化

# git add——向暂存区中添加文件

如果只是用Git 仓库的工作树创建了文件,那么该文件并不会被记 入Git 仓库的版本管理对象当中。因此我们用git status命令查看 README.md 文件时,它会显示在Untracked files 里。

$ git add README.md

Administrator@PC-ybc MINGW64 /f/study/gitTest (master)
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   README.md

使用git add命令把工作树或者工作区文件加入到暂存区(stage或者index),暂存区是提交前一个临时区域

# git commit——保存仓库的历史记录

git commit命令可以将当前暂存区中的文件实际保存到仓库的历 史记录中。通过这些记录,我们就可以在工作树中复原文件

# 提交一行信息

$ git commit -m "first commit"
[master (root-commit) 9798985] first commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md

# 提交详细信息

不使用-m 参数

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: README.md
#

# 终止提交

如果在编辑器启动后想中止提交,请将提交信息留空并直接关闭编 辑器,随后提交就会被中止

# 查看提交后的状态

$ git status
# On branch master
nothing to commit, working directory clean

当前工作树处于刚刚完成提交的最新状态,所以结果显示没有更改。

# git log——查看提交日志

git log命令可以查看以往仓库中提交的日志。包括可以查看什 么人在什么时候进行了提交或合并,以及操作前后有怎样的差别。

$ git log
commit 7f87d4c0a61f9d6d92d9098634c77d21bb367273 (HEAD -> master)
Author: yanxiaose <ybclaji@126.com>
Date:   Tue Jun 23 16:50:24 2020 +0800

    不使用-m参数提交

commit 97989858097c04ddbf14d55a5d3d7cc4973b80f8
Author: yanxiaose <ybclaji@126.com>
Date:   Tue Jun 23 16:48:44 2020 +0800

    first commit

# 只显示提交信息的第一行

$ git log --pretty=short
commit f420c24ffe530e184eebc98b739033d078ac643c (HEAD -> master)
Author: yanxiaose <ybclaji@126.com>

    add git 教程

commit 7f87d4c0a61f9d6d92d9098634c77d21bb367273
Author: yanxiaose <ybclaji@126.com>

    不使用-m参数提交

commit 97989858097c04ddbf14d55a5d3d7cc4973b80f8
Author: yanxiaose <ybclaji@126.com>

    first commit

# 只显示指定目录、文件的日志

$ git log README.md
commit f420c24ffe530e184eebc98b739033d078ac643c (HEAD -> master)
Author: yanxiaose <ybclaji@126.com>
Date:   Wed Jun 24 10:55:55 2020 +0800

    add git 教程

commit 7f87d4c0a61f9d6d92d9098634c77d21bb367273
Author: yanxiaose <ybclaji@126.com>
Date:   Tue Jun 23 16:50:24 2020 +0800

    不使用-m参数提交

commit 97989858097c04ddbf14d55a5d3d7cc4973b80f8
Author: yanxiaose <ybclaji@126.com>
Date:   Tue Jun 23 16:48:44 2020 +0800

    first commit


# 显示文件的改动

$ git log -p README.md
commit f420c24ffe530e184eebc98b739033d078ac643c (HEAD -> master)
Author: yanxiaose <ybclaji@126.com>
Date:   Wed Jun 24 10:55:55 2020 +0800

    add git 教程

diff --git a/README.md b/README.md
index 72943a1..f9bb8d9 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
 aaa
+git 教程

commit 7f87d4c0a61f9d6d92d9098634c77d21bb367273
Author: yanxiaose <ybclaji@126.com>
Date:   Tue Jun 23 16:50:24 2020 +0800

    不使用-m参数提交

diff --git a/README.md b/README.md
index e69de29..72943a1 100644
--- a/README.md
:

# git diff——查看更改前后的差别

git diff命令可以查看工作树、暂存区、最新提交之间的差别

# 查看工作树和暂存区的差别

$ git diff
warning: LF will be replaced by CRLF in README.md.
The file will have its original line endings in your working directory
diff --git a/README.md b/README.md
index 72943a1..f9bb8d9 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
 aaa
+git 教程

这里解释一下显示的内容。“+”号标出的是新添加的行,被删除的 行则用“-”号标出

# 查看工作树和最新提交的差别

在执行git commit命令之前先执行 git diff HEAD命令,查看本次提交与上次提交之间有什么差别,等 确认完毕后再进行提交。这里的HEAD 是指向当前分支中最新一次提交 的指针。

$ git diff HEAD
diff --git a/README.md b/README.md
index 72943a1..f9bb8d9 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
 aaa
+git 教程