works for file对目录不起作用的解决方案。我怎么知道第一次创建目录的第一个git提交?
编辑:正如其中一条评论指出,只有当该目录下的文件被添加到版本控制时,目录才会出现在git中。在这个问题的上下文中,我不知道首先添加该目录下的哪个文件。
答案 0 :(得分:3)
我知道快速查看许多提交中的路径的最佳方法是使用git cat-file --batch-check
。反向列出您的提交,即最早使用您感兴趣的路径并将其提供给批处理检查程序,如果路径丢失,它会报告,但它会对stdout执行,因此您可以打印第一行没有投诉:
git log --reverse --pretty=$'%H:path/to/folder\t%H' \
| git cat-file --batch-check='%(rest)' \
| awk 'NF==1 { print;exit; }'
答案 1 :(得分:1)
以@VonC的答案为基础,将--reverse
与一些awkward post-processing一起使用(可悲的是,{em} {{ 1}}),我们得到:
--reverse
答案 2 :(得分:0)
对于文件夹的所有文件,一种可能的方法是检查when that file was added。
git log --diff-filter=A -- foo.js
但仅使用log for that folder也可以提供帮助:
git log -- path/to/folder
答案 3 :(得分:0)
您可以使用git bisect
查找某些内容发生变化的时间。它假设存储库过去是正确的,但最近发生了一些事情,使其不正确。
对于这个例子,"好"是不目录,"坏"是现有的目录。
首先,您会发现提交内容"坏":
$ ls -d MyDirectory
MyDirectory/
$ git bisect start
$ git bisect bad
然后你找到了一个好的"
的提交$ git checkout HEAD~1000
$ ls -d MyDirectory
ls: cannot access 'MyDirectory': No such file or directory
$ git bisect good
然后你要么反复做手册bisect good/bad
:
$ if [ -d MyDirectory ]; then git bisect bad; else git bisect good; fi
或者您使用bisect run
:
$ git bisect run [ ! -d MyDirectory ]
最后,它会告诉你第一个"坏"提交。