不使用版本控制的协作者向我发送了一个包含一些本地修改的文件.现在他去度假了.我想知道他的编辑基于哪个版本.
我想最有希望的方法是以某种方式迭代最近的提交并检查差异的长度是否最小.
是否有一些现成的功能,或者我需要自己编写代码吗?我自己不是一个git专家,最有希望的方法是什么?
我不知道有任何标准的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
Run Code Online (Sandbox Code Playgroud)
不完全自动,但它会给你输出如下.在此输出中,您可以识别具有最少更改的版本.在我的例子中,我用作例子的简单化改变是基于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(-)
Run Code Online (Sandbox Code Playgroud)
我不确定这种方法是否万无一失.你可能应该看一下周围的几个提交.