Git基本操作
git init
--- 初始化仓库
要使用Git进行版本管理,必须先初始化仓库。Git是使用git init
命令进行初始化操作。
mkdir git-tutorial
cd git-tutorial
git init
已初始化空的 Git 仓库于 /Users/xxxx/Desktop/git-tutorial/.git/
如果初始化成功,执行了git init
命令的目录就会生成.git
目录。这个.git
目录里存储着管理当前目录内容所需要的仓库数据。
在Git中,我们将这个目录的内容称为“附属于该仓库的工作树”。文件的编辑等操作在工作树中进行,然后记录到仓库中,以此管理文件的历史快照。如果想将文件恢复到原先的状态,可以从仓库中调取之前的快照。
git status
---- 查看仓库的状态
git status
命令用于显示git仓库的状态。非常有用,务必牢记。
工作树和仓库在被操作的过程中,状态会不断发生变化。在Git操作过程中时常使用git status
命令查看当前状态。
我们建立 README.md 文件作为管理对象,为第一次提交做前期准备,使用git status
命令查看当前状态.
$git status
位于分支 master
尚无提交
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
readme.md
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
git add
--- 向暂存区添加文件
如果只用Git仓库的工作树创建了文件,该文件兴地被记入Git仓库的版本管理对象中。因此我们用git status
命令查看readme.md文件时,它会显示在未跟踪文件中。
想要让文件成为Git仓库的管理对象。就需要用git add
命令将其加入暂存区。暂存区是提交前的一个临时区域。
$git add readme.md
$git status
位于分支 master
尚无提交
要提交的变更:
(使用 "git rm --cached <文件>..." 以取消暂存)
新文件: readme.md
将readme.md文件加入暂存区后,git status
命令显示的结果发生了变化。readme.md文件处于要提交的变更中。
git commit
----保存仓库的历史记录
git commit
命令将当前暂存区的文件实际保存到仓库的历史记录中。通过这些记录,我们就可以在工作树中复原文件。
- 记述一行提交信息
git commit -m "提交的功能描述或简述"
-m
参数后的文本信息称为提交信息,是对这个提交的概述 - 记述详细提交信息
如果想要记述更加详细的,不要使用-m
参数,直接执行git commit命令后,vim编辑器会启动,显示如下结果。
# 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交
# 说明将会终止提交。
#
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# 新文件: readme.md
在编辑器中记述提交信息的格式如下:
- 第一行:用一行的文字简述提交的更改内容
- 第二行:空行
- 第三行:记述更改的原因和详细内容
只要按照上面的格式输入,今后便可以通过确认日志的命令或工具 看到这些记录。
在以#
(井号)标为注释的Changes to be committed(要提 交的更改)栏中,可以查看本次提交中包含的文件。将提交信息按格式 记述完毕后,请保存并关闭编辑器,以 #
(井号)标为注释的行不必删 除。随后,刚才记述的提交信息就会被提交。
-
中止提交
直接关闭编辑器,提交会随即终止 -
查看提交后的状态
执行完git commit命令后再来查看状态
$ git commit -m "add readme.md file"
[master(根提交) ef26724] add readme.md file
1 file changed, 1 insertion(+)
create mode 100644 readme.md
git status
位于分支 master
无文件要提交,干净的工作区
当前工作树处于刚刚完成提交的最新状态,所以结果显示没有更改。
git log
---- 查看提交日志
git log
命令可以查看以往仓库中提交的日志,包括可以查看什么人在什么时候进行了提交或合并,以及操作前后有怎么样的差别
$ git log
commit ef26724aeaedc087fe1fd955df1c623f6d78d235 (HEAD -> master)
Author: pinghua.yuan <pinghua.yuan@ushow.media>
Date: Thu Nov 14 20:21:58 2019 +0800
add readme.md file
- 只显示提交信息的一行
git log --pretty=short
- 只显示指定目录、文件的日志
git log readme.md
- 显示文件的改动
如果想查看提交所带来的改动,可以加上-p
参数,文件的前后差 别就会显示在提交信息之后。git log -p
查看具体文件的前后差别git log -p readme.md
git diff
--- 查看更改前后的差别
git diff
命令可以查看工作树、暂存区、最新提交之间的差别.
我们在刚才的readme.md文件中添加如下内容:
# Git 基础教程
- 查看工作树和暂存区的差别
执行git diff
命令,查看当前工作树与暂存区的差别
diff --git a/readme.md b/readme.md
index 8e66654..9be2bbd 100644
--- a/readme.md
+++ b/readme.md
@@ -1 +1 @@
-new file content
+# Git 基础教程
我们没有用git add
命令向暂存区添加任何东本。所以只会显示工作树与最新提交状态之间的差别。
"+"号标出的是新添加的行,被删除的行则用“-”号标出。我们可以看到,这次只添加了一行,删除了一行。
接着使用git add
命令将文件添加到暂存区
git add readme.md
- 查看工作树和最新提交的差别
如果我们现在执行git diff
命令,由于工作树和暂存区的状态并无差别,结果什么都不会显示。此时要查看与最新提交的差别,要执行git diff head
diff --git a/readme.md b/readme.md
index 8e66654..9be2bbd 100644
--- a/readme.md
+++ b/readme.md
@@ -1 +1 @@
-new file content
+# Git 基础教程
不妨养成这样一个好习惯:在执行 git commit
命令前先执行 git diff HEAD
命令,查看本次提交与上次提交之间有什么差别,等确认完毕后再进行提交。这里的 HEAD 是指向当前分支中最新一次提交的指针。
$ git commit -m "file modify"
[master 57c6fbf] file modify
1 file changed, 1 insertion(+), 1 deletion(-)
保险起见,我们查看一下提交日志,确认提交是否成功。以下操作成功查到了第二个提交
$ git log
commit 57c6fbfaf1b515b9e2004b4cb898ae60d52232a0 (HEAD -> master)
Author: pinghua.yuan <pinghua.yuan@ushow.media>
Date: Thu Nov 14 20:48:13 2019 +0800
file modify
commit ef26724aeaedc087fe1fd955df1c623f6d78d235
Author: pinghua.yuan <pinghua.yuan@ushow.media>
Date: Thu Nov 14 20:21:58 2019 +0800
add readme.md file