gpt4 book ai didi

git - 如何找到与不受 git 控制的项目修订相对应的提交?

转载 作者:太空狗 更新时间:2023-10-29 14:29:19 27 4
gpt4 key购买 nike

考虑以下情况:

我有一个项目的源代码(几个文件夹和文件)。不幸的是,源代码不受版本控制。但是,这个项目有一个远程 git 存储库。

如何在 git 存储库中找到与我的项目修订相对应的提交?


我的蛮力方法是:克隆存储库,在不同的提交处 checkout 并将 checkout 的文件与我的文件进行比较。

是否有更优雅的方式来查找提交?

最佳答案

我认为这两种明显的方法不可用(查看 VERSIONS/README 文件,或在您下载的 tar.gz 文件中查找版本号)。

您可以尝试以下操作。它会明显更快,因为它避免了 checkout 。它只有在您没有以任何方式修改源代码的情况下才有效。

  1. git init 一个新的仓库
  2. git add 完整的源副本,然后 git commit
  3. git rev-parse HEAD^{tree}获取code对应的tree-SHA

现在 git clone 远程,然后在该 repo 中执行类似

的脚本
# This should be the tree-SHA given by the above 
needle=ABCDEF12345
# you could limit this to just HEAD or a branch if you had a guess
for rev in $(git rev-list --all)
do
if [ $(git rev-parse ${rev}^{tree}) = ${needle} ]
then
echo "Sha ${rev} matches"
fi
done

一旦你有了匹配的 SHA,你就可以尝试使用 git tags --points-at 获取它的版本

关于git - 如何找到与不受 git 控制的项目修订相对应的提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36268756/

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