4

CocoaAsyncSocket プロジェクト (GitHub で入手可能) のコードを使用する XCode プロジェクトを継承しました。ファイル (AsyncSocket.m/h) は XCode プロジェクトにコピーされたので、git の履歴はありません。

持っているファイルのバージョンを見つける必要があります。自分のファイル (編集されていないと仮定) をリポジトリの履歴と比較して、どのコミットがあるかを確認する方法はありますか?

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 に答える