获取2次代码改动的对应代码及行数信息

patch介绍

1
2
3
-p, --patch
交互地在索引和工作树之间选择补丁块并将它们添加到索引中。这让用户有机会在将修改后的内容添加到索引之前查看差异。
这可以有效地运行 add --interactive,但是会绕过初始命令菜单,而直接跳转到 patch 子命令。有关详细信息。

使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
git add -p

commit b329f455f522487133975df6bcaad461d6963d3a
Author: Your Name <you@example.com>
Date: Tue Apr 25 16:33:09 2023 +0800
simple doublescreen move task to other
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index a03dce364209..695c300b51fd 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java

+ import com.android.server.DoubleScreenMovePointerEventListener;
...
(1/1) Stage this hunk [y,n,q,a,d,e,?]?

输入 git add -p 进入 patch mode , 此时 git 会自动将改动切分成多个片段,并展示第一个片段,提示你进行选择。

提示语句是 Stage this hunk [y,n,q,a,d,/,s,e,?]?

这些字母都是什么意思呢? 输入?回车,可以查看详细的帮助信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
y - 暂存此区块
n - 不暂存此区块
q - 退出;不暂存包括此块在内的剩余的区块
a - 暂存此块与此文件后面所有的区块
d - 不暂存此块与此文件后面所有的 区块
g - 选择并跳转至一个区块
/ - 搜索与给定正则表达示匹配的区块
j - 暂不决定,转至下一个未决定的区块
J - 暂不决定,转至一个区块
k - 暂不决定,转至上一个未决定的区块
K - 暂不决定,转至上一个区块
s - 将当前的区块分割成多个较小的区块
e - 手动编辑当前的区块
? - 输出帮助