我不知道有什么标准的 git 命令可以做到这一点。但是一个简单的脚本可以帮助完成这项任务。首先,创建一个tmp-branch 并将文件提交到这个分支。然后创建一个如下所示的简单脚本,以打印该文件与该文件的 50 个最新版本的不同之处。
#!/bin/bash
BRANCH="tmp-branch"
FILE="path/to/file.txt"
RECENT_COMMITS=$(git rev-list -50 master -- $FILE)
for COMMIT in $RECENT_COMMITS
do
echo -n "$COMMIT: "
git diff $BRANCH $COMMIT --shortstat -- $FILE
done
不是全自动的,但它会给你如下输出。在此输出中,您标识更改最少的版本。在我的示例中,我用作示例的简单更改基于edff0c0。
e2b2c157a81e0523e7d4a0a52df79cb4fce981ac: 1 file changed, 12 insertions(+), 16 deletions(-)
154d84736f4df3dd968450599dc254cda56f2057: 1 file changed, 12 insertions(+), 13 deletions(-)
ba11ecc3a4d8268f43589fb929f0877e65879f13: 1 file changed, 11 insertions(+), 13 deletions(-)
017a7a5abdffeb37671a03c0db2e32c37b0ee6bd: 1 file changed, 8 insertions(+), 9 deletions(-)
cc97d3453ebde37b02a42ca7263bf7a983222d4d: 1 file changed, 8 insertions(+), 5 deletions(-)
a84adb9e337d2cf1e851924cf27f5f0bfdca790f: 1 file changed, 7 insertions(+), 4 deletions(-)
9a3c10cefc133792377851b1b5cb8a69d3ffd788: 1 file changed, 7 insertions(+), 3 deletions(-)
edff0c0155b77e39599402574ba1c4aa02c1bbac: 1 file changed, 6 insertions(+), 2 deletions(-)
413800ab0de606548c0c69b4b35e50b527d33d7f: 1 file changed, 13 insertions(+), 2 deletions(-)
af689f1d6d76303d8e39311f48a977b87260586e: 1 file changed, 13 insertions(+), 2 deletions(-)
25123d4196533a0f3ce718a288bc3c5d975ad865: 1 file changed, 24 insertions(+), 3 deletions(-)
e7ca01b247f7e32010f256b55696c3ecb1d72144: 1 file changed, 26 insertions(+), 5 deletions(-)
6e9c2a561cc606f34ccb2cc918b297187c2e8c42: 1 file changed, 33 insertions(+), 23 deletions(-)
我不确定这种方法是否万无一失。您可能还应该看看几个周围的提交。