my_file考虑git 存储库中的一个文件。我想在给定分支(例如 master)中针对该文件的每个最新版本运行 shell 命令(例如) 。wc -l $FILE_VERSIONK
我所说的版本是指文件的唯一快照(即文件更改时)。更具体地说,例如,最新K=4版本:
master <file_changed> v4
master~1 <file_not_changed>
master~2 <file_changed> v3
master~3 <file_changed> v2
master~4 <file_not_changed>
master~5 <file_changed> v1
Run Code Online (Sandbox Code Playgroud)
我该如何用 git 解决这个问题?
我会这样做
for i in $(git log --pretty='%h' -- my_file)
do
echo "$i $(git show ${i}:my_file | wc -l)"
done
Run Code Online (Sandbox Code Playgroud)
这实际上并没有签出文件。简单地显示它。如果需要,您可以将其重定向到文件中并对其运行更复杂的命令。对于wc,这已经足够了。它还使用--prettygit log 的参数,以便我们只获得我们需要的内容,而不是整个提交信息。
这将一直追溯到,但您可以使用 a 将其缩小到只有几个提交head