Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找首次创建目录的git提交_Git - Fatal编程技术网

查找首次创建目录的git提交

查找首次创建目录的git提交,git,Git,不适用于目录的解决方案。我如何知道第一次创建目录的git提交 编辑:正如其中一条评论所指出的,只有当一个目录下的文件被添加到版本控制中时,该目录才会出现在git中。在这个问题的上下文中,我不知道该目录下的哪个文件是首先添加的。一种可能的方法是,对文件夹中的所有文件进行检查 但简单地使用也有助于: git log -- path/to/folder 我所知道的在大量提交中快速检查路径的最好方法是使用git cat文件——批检查。以相反的顺序列出您的提交,即最早的第一行和您感兴趣的路径,并将其提供

不适用于目录的解决方案。我如何知道第一次创建目录的git提交


编辑:正如其中一条评论所指出的,只有当一个目录下的文件被添加到版本控制中时,该目录才会出现在git中。在这个问题的上下文中,我不知道该目录下的哪个文件是首先添加的。

一种可能的方法是,对文件夹中的所有文件进行检查

但简单地使用也有助于:

git log -- path/to/folder

我所知道的在大量提交中快速检查路径的最好方法是使用
git cat文件——批检查
。以相反的顺序列出您的提交,即最早的第一行和您感兴趣的路径,并将其提供给批处理检查器,如果路径丢失,它会向stdout发出投诉,因此您可以打印第一行,而不必投诉:

git log --reverse --pretty=$'%H:path/to/folder\t%H' \
| git cat-file --batch-check='%(rest)' \
| awk 'NF==1 { print;exit; }'

您可以使用
git-bisect
查找什么时候某些内容以某种方式发生了更改。它的运行假设存储库在过去是正确的,但最近发生了一些事情,使它不正确

在本例中,“good”表示目录不存在,而“bad”表示目录存在

首先,您会发现一个“不好”的提交:

然后你找到一个“好”的承诺

然后,您可以重复执行手动
平分好/坏

$ if [ -d MyDirectory ]; then git bisect bad; else git bisect good; fi
或者使用
对分运行

$ git bisect run [ ! -d MyDirectory ]
最后,它会告诉您第一次“错误”提交。

基于的答案,使用
--reverse
和一些(遗憾的是,
--reverse
-n1
之后应用于日志),我们得到:

git log--path/to/folder | awk'NR>1{print last}{last=$0}/^提交&&++c==2{exit}'

如果我错了,请纠正我的错误,但我相信目录的登录方式与文件不同,例如,因为您需要在新目录中添加一个文件才能添加它。因此,我认为您需要知道目录中的第一个文件是何时提交的。我澄清了您的疑问。我发现这很有用,能够具体引用目录创建会很好,但足够好-有人只添加一个空文件夹的边缘情况
$ git checkout HEAD~1000
$ ls -d MyDirectory
ls: cannot access 'MyDirectory': No such file or directory
$ git bisect good
$ if [ -d MyDirectory ]; then git bisect bad; else git bisect good; fi
$ git bisect run [ ! -d MyDirectory ]