CocoaAsyncSocket プロジェクト (GitHub で入手可能) のコードを使用する XCode プロジェクトを継承しました。ファイル (AsyncSocket.m/h) は XCode プロジェクトにコピーされたので、git の履歴はありません。
持っているファイルのバージョンを見つける必要があります。自分のファイル (編集されていないと仮定) をリポジトリの履歴と比較して、どのコミットがあるかを確認する方法はありますか?
まず、 を使用してファイルのハッシュを計算します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
私が知っている簡単な方法ではありません。特に、そのファイルの特定のバージョンがプロジェクト全体の複数のバージョンに表示される場合 (つまり、そのファイルがリリース間で変更されていない場合)。
ただし、git hash-object -t blob AsyncSocket.h
そのファイルのハッシュを取得しgit ls-tree -r <some_version_tag>^{tree} | grep <hash>
、さまざまなバージョン タグに対して繰り返し使用して、そのファイルが含まれているバージョンを特定することができます。もちろん、「インポート」されてから何らかの変更が加えられている場合、元のコピーを手に入れることができない限り、これは機能しません...