Git学习笔记

关于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 系统中被编辑过。
  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值