gpt4 book ai didi

git - 如何获取当前 git 状态的所有作者?

转载 作者:太空狗 更新时间:2023-10-29 13:20:40 25 4
gpt4 key购买 nike

我一直试图找到一个 git 项目的所有作者,这样我就可以询问是否重新许可他们的提交。我认为联系所有作者是没有意义的,因为可能有些人在代码库中有代码,但它已被删除。所以我只想联系提交在当前 HEAD 中可见的作者。

有人告诉我 git log 有这个功能,但我在上面找不到任何东西,除了像这样的东西:

git log --format='%an <%ae>'

除了不排除在当前代码库中没有代码的作者之外,它可以实现我想要实现的目标。

我怎样才能做到这一点?

最佳答案

IANAL,但至于重新授权,我不太确定仅获得在当前项目中拥有任何代码的作者的许可就足够了。毕竟他们的贡献/ promise 以某种方式导致了项目的当前状态。

除此之外,您可能想看看 git blame .它显示了哪个作者在哪个提交中引入了文件的哪一行。这应该使您更接近问题的解决方案。也许使用 awk 进行一些额外的后期处理 ... |排序 | uniq 可以完成剩下的工作。

但是,git blame 仅显示单个文件的信息,因此您必须对存储库中的所有文件重复该操作。

在 Git 存储库的根目录中,您可以在 Linux 系统上使用这样的 shell 命令:

find ./ -name '*.cpp' -print0 | xargs -0 -i git blame --show-email {} | awk ' { print $3 } ' | sort | uniq

这将使用 find 搜索 C++ 源文件(扩展名 *.cpp)并对所有这些文件执行 git blamegit blame 的选项 --show-email 显示电子邮件地址而不是名称,这更容易过滤,因为名称可以由几个单词组成,而一个地址通常只有一个。 awk 然后只获取输出的第三列,即邮件地址。 (第一个是短提交哈希,第二个是文件名。)最后,sort | uniq 用于去除重复项,每个地址只显示一次。

(未经测试,但它可能会为您指明正确的方向。)

如果你只想要每个曾经向存储库提交过任何东西的作者,只需使用

git log --format='%an <%ae>' | sort | uniq

相反。

关于git - 如何获取当前 git 状态的所有作者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39645035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com