Git学习笔记

文章目录

    • [关于Git diff 操作的细节](#关于Git diff 操作的细节)

关于Git diff 操作的细节

复制代码
$ git diff HEAD^ HEAD
diff --git a/file1.txt b/file1.txt
index 58c9bdf..ee1cd12 100644
--- a/file1.txt
+++ b/file1.txt
@@ -1 +1 @@
-111
+<C4><E3><CA>ǵ<DA>1<C2><F0>
diff --git a/file3.txt b/file3.txt
new file mode 100644
index 0000000..a68672c
--- /dev/null
+++ b/file3.txt
@@ -0,0 +1 @@
+<C4><E3><CA>ǵ<DA>2<C3><FB><C2><F0>

执行命令git diff HEAD^ HEAD(意思是比较前一commit版本和当前commit版本差别),输出两部分差别内容**(即两次版本比较一共有两个文件发生变动)**,其中第一部分差别内容解释如下:

  • git diff HEAD^ HEAD:这是你执行的 Git 命令,它比较当前分支的最新提交(HEAD)与其父提交(HEAD^)之间的差异,diff后第一个常用来表示父版本(会用-和---来表示)(老版本),第二个常用来表示新版本(会用+和+++来表示)。
  • diff --git a/file1.txt b/file1.txt:这行表示 Git 正在比较两个版本的文件 file1.txt。
  • index 58c9bdf...ee1cd12 100644:这行显示了两个版本文件在 Git 索引中的哈希值。58c9bdf 是父提交中的文件索引哈希值,ee1cd12 是当前提交中的文件索引哈希值。100644 是文件的权限模式,表示这是一个普通文件。
  • --- a/file1.txt:--- 这表示差异比较中的原始文件版本(HEAD^,即diff 后第一个文件),a/ 前缀表示它是 HEAD^ 指向的提交中的文件。
  • +++ b/file1.txt:+++ 这表示差异比较中的目标文件版本(HEAD,即diff后第二个文件),b/ 前缀表示它是当前 HEAD 指向的提交中的文件。
  • @@ -1 +1 @@:这表示差异发生在原始版本文件的第1行。-1 表示原始文件==(-表示的diff 后的第一个文件))的第1行,+1 表示新文件(+表示的diff 后的第二个文件)==的第1行。
  • -111:这表示原始文件的第1行包含文本 "111"。
  • +<C4><E3><CA>ǵ<DA>1<C2><F0>:这表示当前提交中的文件第1行现在包含一系列非打印字符。这些字符可能是由于编码问题或文件包含二进制数据。

第二部分内容差别解释:

  • diff --git a/file3.txt b/file3.txt:这行表明 Git 正在比较两个版本的 file3.txt 文件,a/ 和 b/ 是 Git 用来表示源文件和目标文件的前缀。

  • new file mode 100644:这表示 file3.txt 是一个新添加的文件,100644 是文件的权限模式。在 Git 中,文件权限模式 100644 表示一个普通文件。

  • index 0000000...a68672c:这行显示了文件在索引中的哈希值。0000000 表示文件之前的状态(这里是没有状态,因为这是一个新文件),a68672c 是文件当前的状态。

  • --- /dev/null:这表示差异比较中的原始文件是一个空文件(/dev/null),因为 file3.txt 是新添加的,所以它之前不存在。

  • +++ b/file3.txt:这表示差异比较中的目标文件是 b/file3.txt,即新添加的文件。

  • @@ -0,0 +1 @@:这是差异的开始,-0,0 表示原始文件没有行,+1 表示新文件有一行。

  • +<C4><E3><CA>ǵ<DA>2<C3><FB><C2><F0>:这是新文件中添加的内容。这些字符看起来像是二进制数据或非标准编码的文本,因为它们不是可见的 ASCII 字符。

    $ git diff HEAD^ HEAD
    diff --git a/file3.txt b/file3.txt
    index a68672c..224ed19 100644
    --- a/file3.txt
    +++ b/file3.txt
    @@ -1 +1,2 @@
    -<C4><E3><CA>ǵ<DA>2<C3><FB><C2><F0>
    +你们是第3吗
    +你是啥玩意?
    \ No newline at end of file

解释:

  • git diff HEAD^ HEAD:这是你执行的 Git 命令,它比较当前分支的最新提交(HEAD)和它的前一个提交(HEAD^)之间的差异。
  • diff --git a/file3.txt b/file3.txt:这行表示 Git 正在比较 file3.txt 文件的两个版本。
  • index a68672c...224ed19 100644:这行显示了两个版本文件在 Git 索引中的哈希值。a68672c 是 HEAD^(父提交)中的文件索引哈希值,224ed19 是 HEAD(当前提交)中的文件索引哈希值。100644 是文件的权限模式,表示这是一个普通文件。
  • --- a/file3.txt 和 +++ b/file3.txt:这两个行分别表示差异比较中的原始文件版本和目标文件版本。a/ 和 b/ 是 Git 用来区分两个版本文件的前缀。
  • @@ -1 +1,2 @@:这表示差异发生在文件的第1行。在原始文件中,这是第1行;在新文件中,这表示第1行和第2行==(即新版本文档中有两行内容,分别对应之后的两个+)==。
  • -<C4><E3><CA>ǵ<DA>2<C3><FB><C2><F0>:这表示原始文件的第1行包含一系列非打印字符。这些字符看起来像二进制数据或特定编码的文本。
  • +你们是第3吗 和 +你是啥玩意?:这表示在当前提交中,原始的第1行被替换成了两行中文文本。
  • \ No newline at end of file:这行表示原始文件在最后一行后面没有换行符。在 Unix/Linux 系统中,文件通常以换行符结束,而在 Windows 系统中,文件以回车和换行符的组合(CRLF)结束。Git 会根据配置自动处理这些差异,但这个信息表明原始文件可能在 Windows 系统中被编辑过。
相关推荐
naice2 小时前
我对github的图片很不爽了,于是用AI写了一个图片预览插件
前端·javascript·git
会飞的青蛙8 小时前
GIT 配置别名&脚本自动化执行
前端·git
使一颗心免于哀伤9 小时前
《设计模式之禅》笔记摘录 - 21.状态模式
笔记·设计模式
权咚2 天前
阿权的开发经验小集
git·ios·xcode
_落纸2 天前
三大基础无源电子元件——电阻(R)、电感(L)、电容(C)
笔记
Alice-YUE2 天前
【CSS学习笔记3】css特性
前端·css·笔记·html
2303_Alpha2 天前
SpringBoot
笔记·学习
萘柰奈2 天前
Unity学习----【进阶】TextMeshPro学习(三)--进阶知识点(TMP基础设置,材质球相关,两个辅助工具类)
学习·unity
沐矢羽2 天前
Tomcat PUT方法任意写文件漏洞学习
学习·tomcat
好奇龙猫2 天前
日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(10):91-100语法+考え方13
学习