git diff 基础 命令

电脑知识 投稿 61900 0 评论

git diff 基础 命令

1、git diff 命令说明

在操作之前,我们通常要确定一下自己在什么地方更改了代码,看看有没有误操作代码,这个时候命令的显示就比较简单了,仅仅是列出了修改过的文件,如果要查看具体修改了什么地方,就可以使用命令。

比较有用的选项::显示有多少行发生变化,简洁的展示差异。

2、比较工作区与暂存区中文件的差别

查看工作区与暂存区内容的区别,使用无选项的命令。

:获取指定文件的修改。

(1)首先在工作目录中创建一个文件,并添加到暂存区。

# 1.查看工作目录中的文件状态
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
nothing to commit, working tree clean

# 2.创建hello.html文件
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ echo "hello git" > hello.html

# 3.把hello.html文件添加到暂存区
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git add hello.html

(2)向文件添加一行新的内容,之后查看工作区与暂存区文件的区别。

# 1.向hello.html文件添加内容
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ echo "new one line" >> hello.html

# 2.比较工作区与暂存区中hello.html文件的区别
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git diff hello.html
diff --git a/hello.html b/hello.html
index 8d0e412..ee5cc3c 100644
--- a/hello.html
+++ b/hello.html
@@ -1 +1,2 @@
 hello git
+new one line

说明:

  • :表示进行比较的是文件的版本(即变动前)和版本(即变动后)。

  • :表示两个版本的索引值,前边表示暂存区文件的索引,后边代表工作区中文件的索引。

  • :表示文件模式,代表普通文件,代表文件具有的权限(同Linux文件权限)。

  • 和:表示进行比较的两个文件,表示变动前的版本,表示变动后的版本。

  • :表示代码变动的位置,用两个作为起首和结束。
    以说明:分成三个部分:
    表示变动后文件,1表示第一行,2表示连续2行。(也就是从第一行开始,有连续两行的内容。我个人的理解就是表示文件有几行内容。)

  • 最后一部分为文件变动的具体内容,每一行最前面的标志位:
    代表第一个文件删除的行,用红色表示。
    表示第二个文件新增的行,用绿色表示。
    无标志表示该行无变动。

这里在简单说明一下选项的作用,如下:

# `--stat`选项作用:简洁的展示差异
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git diff hello.html --stat
fatal: option '--stat' must come before non-option arguments
# 错误提示:选项“--stat”必须位于非选项参数之前

# 正确写法,只显示了简要的内容
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git diff --stat hello.html
 hello.html | 1 +
 1 file changed, 1 insertion(+)

(3)将修改后的文件添加到暂存区中,再次来查看该文件。

# 1.将修改后的hello.html文件添加到暂存区中
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git add hello.html

# 在执行命令查看hello.html文件
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git diff hello.html

没有任何输出,这就说明此时,工作区中文件的内容,与暂存区中文件的内容没有区别。

3、比较暂存区与本地库中文件的差别

查看暂存区与本地库中文件内容的区别,使用带选项的命令。

使用命令:

(1)接上面练习,把文件提交到本地版本库中。

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git commit -m 'add hello.html file'
[master 6b6b1fc] add hello.html file
 1 file changed, 2 insertions(+)
 create mode 100644 hello.html

(2)修改文件,然后添加到暂存区。

# 修改hello.html文件
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ echo "new two two line" >> hello.html

# 添加到暂存区
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git add hello.html

(3)比较暂存区和本地版本库中文件的区别。

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git diff --cached hello.html
diff --git a/hello.html b/hello.html
index ee5cc3c..7c88cdc 100644
--- a/hello.html
+++ b/hello.html
@@ -1,2 +1,3 @@
 hello git
 new one line
+new two two line

从上面文件中可以看出,暂存区中的文件比本地版本库中的文件,多出一行内容。(解读方式同上。)

4、总结git diff命令常见用法

  1. 比较工作区与暂存区:
    命令,不加参数即默认比较工作区与暂存区。

  2. 比较暂存区与最新本地版本库(本地库中最近一次的内容):
    命令或者命令(1.6.1版本以上)。

  3. 比较工作区与最新本地版本库:
    命令,如果指向的是分支,那么还可以换成。

  4. 比较工作区与指定提交的差异:
    命令。

  5. 比较暂存区与指定提交的差异:
    命令。

  6. 比较两个提交之间的差异:
    命令。

  7. 使用命令打补丁,这个用法以后会详解,知道有这么回事就行。

提示:以上就不详细说明了,看前面举例两个例子,其他同理。

5、总结

以现在学到的知识点,命令能解决我们两个问题:

  • 查看当前做的哪些更新还没有暂存?
    需要查看细节的时候,使用命令。

  • 查看有哪些更新已经暂存起来,准备好了下次提交?
    需要查看细节的时候,使用命令或者命令。

编程笔记 » git diff 基础 命令

赞同 (87) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽