我继承了一个使用CocoaAsyncSocket项目代码的XCode项目(可在GitHub上获得)。文件(AsyncSocket.m / h)被复制到XCode项目中,因此我没有git历史记录。
我需要找到我的文件版本。有没有办法可以比较我的文件(假设它们没有被编辑)和repo的历史记录,看看我有哪些提交?
答案 0 :(得分: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
答案 1 :(得分:2)
这不是我所知道的简单方法,特别是如果该文件的特定版本出现在整个项目的多个版本中(即该文件在版本之间没有变化)。
但是,您可以git hash-object -t blob AsyncSocket.h
获取该文件的哈希值,然后对不同的版本标记重复使用git ls-tree -r <some_version_tag>^{tree} | grep <hash>
以确定该文件包含的版本。当然,如果它被修改了,因为它是'#34;导入&#34;,除非你可以得到原始副本,否则它不会起作用......