如何通过重命名对文件进行修改?

时间:2013-05-17 09:12:00

标签: git history

我可以做得很好:

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技巧。

我也接受只获取该文件的所有完整路径名,以及获取不再存在的路径的完整历史记录的方法。然后我可以分阶段进行,但当然我更喜欢一次性的方法。

1 个答案:

答案 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 showgit log信息。