我正在我的存储库中进行一些目录级别的重组。结果提交显示了许多文件级重命名,这掩盖了我在概念上所做的只是一两个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