增加内容
第一步,我们先创建一个文件,然后在文件中增加一些内容。
然后通过git status来查看当前这个工作区的情况,可以看到有一个提示说明test.txt文件位于当前master分支,并且是一个未跟踪的文件,如果要加入版本库跟踪需要使用git add建立跟踪。
codemaxi@codemaxi-PC:~/git_test$ touch test.txt
codemaxi@codemaxi-PC:~/git_test$ ls
test.txt
codemaxi@codemaxi-PC:~/git_test$ echo "first line" > test.txt
codemaxi@codemaxi-PC:~/git_test$ cat test.txt
first line
codemaxi@codemaxi-PC:~/git_test$ git status
位于分支 master
尚无提交
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
test.txt
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
codemaxi@codemaxi-PC:~/git_test$
下面我们执行add操作,然后用git status,可以看到文件的状态变成了“需要提交的变更-新文件”
codemaxi@codemaxi-PC:~/git_test$ git add test.txt
codemaxi@codemaxi-PC:~/git_test$ git status
位于分支 master
尚无提交
要提交的变更:
(使用 "git rm --cached <文件>..." 以取消暂存)
新文件: test.txt
codemaxi@codemaxi-PC:~/git_test$
git add 实际上是个脚本命令,它是对 git 内核命令 git update-index 的调用。因此上面的命令和下面的命令其实是等价的:
$git update-index --add test.txt
普通用户总是应该使用 git add, 而不要使用上面提到的 update-index内部命令。
添加所有未跟踪文件可以使用 git add -A
修改与提交
上面我们把新增加的文件add到了暂存区(index区),下面我们需要把文件提交到本地仓库:
codemaxi@codemaxi-PC:~/git_test$ git commit -m "commit test.txt file" test.txt
[master (根提交) 0a78fac] commit test.txt file
1 file changed, 1 insertion(+)
create mode 100644 test.txt
codemaxi@codemaxi-PC:~/git_test$
提交后再用git status查看就发现没有提示存在修改的文件或者新文件了
codemaxi@codemaxi-PC:~/git_test$ git status
位于分支 master
无文件要提交,干净的工作区
commit 是把暂存区的修改文件,也就是add之后的提交到本地仓库,如果文件修改但是没有add到暂存区就执行commit是不会提交到本地仓库的。
如下,有两个修改或者新增文件还在工作区未使用add增加到暂存区:
codemaxi@codemaxi-PC:~/git_test$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: test.txt
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
test2.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
codemaxi@codemaxi-PC:~/git_test$
我们先使用git add
把其中一个增加到暂存区,然后提交,可以发现只提交了add的那个文件,没有add到暂存区的文件依然还在工作区:
codemaxi@codemaxi-PC:~/git_test$ git add test.txt
codemaxi@codemaxi-PC:~/git_test$
codemaxi@codemaxi-PC:~/git_test$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <文件>..." 以取消暂存)
修改: test.txt
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
test2.txt
codemaxi@codemaxi-PC:~/git_test$ git commit -m "test file second commit"
[master 577e8c0] test file second commit
1 file changed, 1 insertion(+), 1 deletion(-)
codemaxi@codemaxi-PC:~/git_test$ git status
位于分支 master
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
test2.txt
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
codemaxi@codemaxi-PC:~/git_test$
git diff 命令将比较当前的工作目录与版本库中的内容差异。我们想要查看对比原文件修改了哪些内容可以使用git diff files,或者直接git diff查看所有修改的文件:
codemaxi@codemaxi-PC:~/git_test$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <文件>..." 以取消暂存)
新文件: test2.txt
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: test.txt
codemaxi@codemaxi-PC:~/git_test$ git diff
diff --git a/test.txt b/test.txt
index ab51f65..21cff5b 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
test-second line
+test files third line
codemaxi@codemaxi-PC:~/git_test$
差异将以典型的 patch 方式表示出来。
此时,我们可以再次使用组合命令 git add 和 git commit 将我们的工作提交到版本库中。
实际上,如果要提交的文件都是已经纳入 git 版本库的文件,那么不必为这些文件都应用 git add 命令之后再进行提交,下面的命令git commit -a -m "comments" files
更简捷并且和上面的命令是等价的。
codemaxi@codemaxi-PC:~/git_test$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: test.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
codemaxi@codemaxi-PC:~/git_test$ git commit -a -m "direct commit without add"
[master a8d38c4] direct commit without add
1 file changed, 1 insertion(+)
codemaxi@codemaxi-PC:~/git_test$
我们通过git status查看到文件test.txt还是“尚未暂存…”,也就是说还为使用add把该文件加到暂存区。可以直接使用git commit -a命令完成add和commit操作。
查看历史记录
上面我们已经对文件进行了多次的修改并提交到本地仓库,那么我现在想查看历史记录,该如何查呢,我们下面演示以下git log命令的使用:
codemaxi@codemaxi-PC:~/git_test$ git log
commit a8d38c4eca3245e489ef1684322e5a68c6265a8b (HEAD -> master)
Author: codemaxi <374867193@qq.com>
Date: Sun May 23 22:08:15 2021 +0800
direct commit without add
commit 3c09c3da5e686cc4d3cba4576d146f8824419cf5
Author: codemaxi <374867193@qq.com>
Date: Sun May 23 22:07:41 2021 +0800
new files test2.txt commit
commit 577e8c0826b6185efff1c000d6828dcbd044786a
Author: codemaxi <374867193@qq.com>
Date: Sun May 23 21:19:05 2021 +0800
test file second commit
commit 0a78faca73c6742efd5029ba4b697c928b33b96d
Author: codemaxi <374867193@qq.com>
Date: Sun May 23 19:27:31 2021 +0800
commit test.txt file
codemaxi@codemaxi-PC:~/git_test$
从上面的信息可以看到git log命令可以查看多次历史提交记录,主要有commit id(版本号),作者,时间以及提交的说明。git log命令显示从最近到最远的显示日志的。
git log还有一些其他的选项:
git log --pretty=oneline
git log --pretty=short
git log --pretty=full
git log --pretty=fuller
具体显示信息如下:
codemaxi@codemaxi-PC:~/git_test$ git log --pretty=oneline
a8d38c4eca3245e489ef1684322e5a68c6265a8b (HEAD -> master) direct commit without add
3c09c3da5e686cc4d3cba4576d146f8824419cf5 new files test2.txt commit
577e8c0826b6185efff1c000d6828dcbd044786a test file second commit
0a78faca73c6742efd5029ba4b697c928b33b96d commit test.txt file
codemaxi@codemaxi-PC:~/git_test$
还有一些其他的就不一一演示了,请看下面的表:
选项 | 说明 |
---|---|
-p | 按补丁格式显示每个更新之间的差异。 |
–stat | 显示每次更新的文件修改统计信息。 |
–shortstat | 只显示 --stat 中最后的行数修改添加移除统计。 |
–name-only | 仅在提交信息后显示已修改的文件清单。 |
–name-status | 显示新增、修改、删除的文件清单。 |
–abbrev-commit | 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。 |
–relative-date | 使用较短的相对时间显示(比如,“2 weeks ago”)。 |
–graph | 显示 ASCII 图形表示的分支合并历史。 |
–pretty | 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。 |
查看历史修改内容
git show 命令可以用于显示提交日志的相关信息(以不同格式或信息量的多少)。
codemaxi@codemaxi-PC:~/git_test$ git show
commit a8d38c4eca3245e489ef1684322e5a68c6265a8b (HEAD -> master, tag: v1.0)
Author: codemaxi <374867193@qq.com>
Date: Sun May 23 22:08:15 2021 +0800
direct commit without add
diff --git a/test.txt b/test.txt
index ab51f65..21cff5b 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
test-second line
+test files third line
codemaxi@codemaxi-PC:~/git_test$
git show默认显示的是HEAD,如想显示某个提交信息,那么在git show后带上commit id即可,如下:
codemaxi@codemaxi-PC:~/git_test$ git show 3c09c3da5e686cc4d3cba4576d146f8824419cf5
commit 3c09c3da5e686cc4d3cba4576d146f8824419cf5
Author: codemaxi <374867193@qq.com>
Date: Sun May 23 22:07:41 2021 +0800
new files test2.txt commit
diff --git a/test2.txt b/test2.txt
new file mode 100644
index 0000000..65fa4b1
--- /dev/null
+++ b/test2.txt
@@ -0,0 +1 @@
+test2-first line
codemaxi@codemaxi-PC:~/git_test$
具体还有各种各样的格式就不一一介绍了,大家可以–help查看。