Git学习笔记:基本操作

增加内容

第一步,我们先创建一个文件,然后在文件中增加一些内容。

然后通过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查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值