【发布时间】:2013-11-13 01:54:25
【问题描述】:
我正在我的存储库中进行一些目录级别的重组。结果提交显示了很多文件级重命名,这掩盖了我所做的只是一两个git mv dir1/ dir2/ 命令的概念。
有没有办法让git log 总结这种操作来表明,从概念上讲,整个目录被移动了?我认为--dirstat 或--summarize 至少能让我接近,但他们似乎没有做我想做的事。
(我知道 git 的存储库模型不跟踪有关目录的任何信息,只跟踪文件。但是,文件重命名也是如此,但它能够在事后推导出有关文件级重命名的信息。)
这是一个简单的例子:
#setup
git init
mkdir dir1
for f in foo bar baz; do echo $f > dir1/$f; done
git add dir1
git commit -m 'dir1'
#do the directory move
git mv dir1 dir2
git commit -m 'rename dir1 to dir2'
在这一点上,我希望看到这样的东西:
$ git log -1 --what-options-go-here?
b0ba9c9 rename dir1 to dir2
0 0 {dir1 => dir2}/
相反,我似乎只能产生这样的东西:
$ git log -1 --numstat --oneline
b0ba9c9 rename dir1 to dir2
0 0 {dir1 => dir2}/bar
0 0 {dir1 => dir2}/baz
0 0 {dir1 => dir2}/foo
【问题讨论】: