git:确定给定文件是否在修订散列 A 和 B 之间更改?
git: determine whether a given file changed between revision hashes A and B?
Git 中是否有一种简单的方法来确定给定文件是否在修订哈希 A 和 B 之间发生了变化?
我知道如果我可以确定修订散列 A' 和 B',我可以轻松地做到这一点,其中 A'=predchange(A, path) 和 B'=predchange(B, path),其中 predchange(X , path) 是给定路径发生更改的 X(或 X 本身)的最近父级。然后我只检查是否 A' == B'.
是的,您可以使用 git diff
with a range。
git diff HEAD^.. file.txt
如果您看到 less
是空的,则没有任何变化。
git diff [--stat] A..B -- path/to/file
对于--stat
,它只显示更改的单行摘要。没有,它显示实际差异。
A..B
语法是一个修订范围。它扫描为 "All commits reachable from B, but not from A"。当您传递 revision range to diff 时,它会显示范围内所有提交的差异。 A
和 B
是 "commitish" - SHA1 的标识提交、引用或标记、HEAD,或者任何前面结合特殊选择器的组合,例如 ^
.
git diff <A> <B> -- <path> | wc -l
0 表示文件未更改。
Git 中是否有一种简单的方法来确定给定文件是否在修订哈希 A 和 B 之间发生了变化?
我知道如果我可以确定修订散列 A' 和 B',我可以轻松地做到这一点,其中 A'=predchange(A, path) 和 B'=predchange(B, path),其中 predchange(X , path) 是给定路径发生更改的 X(或 X 本身)的最近父级。然后我只检查是否 A' == B'.
是的,您可以使用 git diff
with a range。
git diff HEAD^.. file.txt
如果您看到 less
是空的,则没有任何变化。
git diff [--stat] A..B -- path/to/file
对于--stat
,它只显示更改的单行摘要。没有,它显示实际差异。
A..B
语法是一个修订范围。它扫描为 "All commits reachable from B, but not from A"。当您传递 revision range to diff 时,它会显示范围内所有提交的差异。 A
和 B
是 "commitish" - SHA1 的标识提交、引用或标记、HEAD,或者任何前面结合特殊选择器的组合,例如 ^
.
git diff <A> <B> -- <path> | wc -l
0 表示文件未更改。