查看多个git存储库的日志

是的

我在目录中有git存储库。例如,

$ ls
repo1 repo2 repo3 repo4

我想快速查看所有存储库的最后k个提交日志。k大约是3.)

对于repo1,我可以打印最后3个提交日志,然后返回到该目录,如下所示:

$ cd repo1; git log -3 ; cd ../

但我不想在所有存储库中重复此操作。我正在寻找一种轻松实现此目标的聪明方法。(也许使用xargs?)

我正在使用Bash。谢谢。

o11c

通常,使用毫无意义xargs,因为find可以自己执行内容:

find ~/src/ -maxdepth 2 -name .git -execdir git log \;

说明:

find ~/src/

在〜/ src /下查找内容。如果需要,可以传递多个参数,可能是由于Shell glob所致。

-maxdepth 2

不要深入地递归。由于命中文件系统相对较慢,因此可以节省大量时间。

-maxdepth 2 会找到〜/ src / .git(如果存在)和〜/ src / foo / .git,因此无论您传递repo目录本身还是仅传递包含所有存储库的目录,都可以使用它。

-maxdepth 1 如果您只想自己传递repo目录,它将可以工作(并且在IO上更容易)。

-maxdepth 3可能偶尔会在某些源层次结构中使用,但对于它们,您最好将其他目录find首先传递给它们

-name .git

我们正在寻找.git目录(或文件!是的,git会这样做),因为-execdir通常会接受一个{}参数,并将其传递给命令。传递的文件名将只是基本名称(这样,例如,mv可以正常工作……请记住,find通常可以与文件一起使用),并且将工作目录设置为包含文件的目录

-execdir ... \;

在仓库本身中运行命令。命令(here ...)可以包含任何内容,尤其是-不会被find自身解释的选项...除了{}单词任何地方是文件名之外,孤行;符都会终止命令(但在此处为shell逸出),并+终止命令但一次传递多个文件。

对于此用例,我们不需要传递文件名,因为运行程序的目录提供了所有必需的信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章