4

我继承了一个 XCode 项目,该项目使用来自 CocoaAsyncSocket 项目(可在 GitHub 上获得)中的代码。文件(AsyncSocket.m/h)被复制到 XCode 项目中,所以我没有 git 历史记录。

我需要找到我拥有的文件版本。有没有办法可以将我的文件(假设它们没有被编辑)与 repo 的历史记录进行比较,以查看我有哪个提交?

4

2 回答 2

4

首先使用 . 计算文件的哈希值git hash-object
然后,您可以使用git ls-tree列出每个有问题的提交的哈希值。

我会使用这样的东西:

file=AsyncSocket.m
hash=$(git hash-object $file)
for i in $(git rev-list  HEAD -- $file); do
   git ls-tree $i|grep -q $hash && echo $i
done|xargs -l git log -1 --oneline --decorate
于 2013-05-09T18:05:13.467 回答
2

我知道这不是一种简单的方法,特别是如果该文件的特定版本出现在整个项目的多个版本中(即该文件在版本之间没有更改)。

但是,您可以git hash-object -t blob AsyncSocket.h获取该文件的哈希值,然后git ls-tree -r <some_version_tag>^{tree} | grep <hash>重复使用不同的版本标签来确定包含该文件的版本。当然,如果它在“导入”后无论如何都被修改过,除非你能拿到原始副本,否则这是行不通的......

于 2013-05-09T17:39:42.670 回答