我可以做得很好:
git log --format=%h -- filename | while read f; do git show $f:filename; done
但是,如果我尝试将--follow
添加到git log
调用,则文件会在目录中移动并更改名称,因此路径更改时git show
调用失败。我已尝试插入各种内容以获取完整路径(fullname=`ls-tree --name-only $f -- filename`
等)并将其传递给git show
,但没有任何效果,而且我对谷歌搜索和搜索搜索结果没有太大影响。我觉得我错过了一些明显的东西,比如git log --format
技巧。
我也接受只获取该文件的所有完整路径名,以及获取不再存在的路径的完整历史记录的方法。然后我可以分阶段进行,但当然我更喜欢一次性的方法。
答案 0 :(得分:0)
我设法用这个来提取我需要的数据:
`git log --follow --format='%h' --name-only -- filename | vim -`
Vim发布的信息如下:
21acc7c
work/oldname
dea4a67
work/filename
103b0ee
work/subfolder/filename
387b384
work/filename
741bbc7
filename
etc...
我做了:g/filename/norm kkJJ
加入他们:
21acc7c work/oldname
dea4a67 work/filename
103b0ee work/subfolder/filename
387b384 work/filename
741bbc7 filename
这让我把事情变成了我需要的东西,虽然我不得不跳过一些箍来保持排序,因为git只存储到第二个,而rebase往往会在同一时间创建许多提交。父母保留订单,但这意味着我必须处理循环中的排序,而不是基于git show
或git log
信息。