私はgitでプロジェクトに取り組んでいますが、過去のある時点(コードを入手するずっと前)に。というファイルが存在していたことを知っていますexec.js
。このファイルの内容を表示したい。このファイルが含まれていたリポジトリはわかりますが、正確なパスはわかりません。
3 に答える
でワイルドカード文字を使用できますgit log
:
git log -- *exec.js
exec.js
呼び出されたファイルが変更されたときに、すべてのログメッセージが表示されます。
A
削除コミット(たとえば)を見つけたら、次のことができます
git checkout A -- *exec.js
これにより、の最後のバージョンが表示されexec.js
ます。
の完全な履歴を表示したい場合はexec.js
、次を使用できますgitk
。
gitk -- *exec.js
これにより、すべての変更が再度表示されます。gitk
1つのコミットに特に関心がある場合は、ダイアログでファイルを右クリックして、外部差分ツールを選択できます。これにより、パッチだけでなく、完全なファイルで外部差分ツールが開きます。
-を使用して、ログ履歴内の特定のファイルを検索できます。
ファイルパスがない場合は
git log --diff-filter=D --summary | grep filename
ファイルパスがある場合は、次を使用できます-
git log -- filepath
git log -n 1 -- filepath
リビジョンを取得したら、その特定のリビジョンをチェックアウトしてそのファイルを取得できます
削除されたファイルのフルネームとその内容を1つまたは2つのコマンドで一覧表示する簡単な方法はありません。ただし、開始するためのエイリアスは次のとおりです。
$ git config --global alias.find-deleted-file '!f() { for c in `git rev-list HEAD`; do for fnm in `git diff-tree -r --diff-filter=D --name-only $c | grep -P ".*/$1"` ; do echo "$c $fnm" ; git show $c^:$fnm ; echo "" ; done ; done ; } ; f'
これにより、提供されたファイル名パターン(によって提供されたパターンマッチング)でfind-deleted-file
削除されたファイルを検索するGitエイリアスが利用可能になり、ファイルが削除されたコミット、ファイルのフルネーム、および削除前のコンテンツが表示されます。diff-tree
grep -P
次のリポジトリ履歴の例を使用します。
$ git log --all --graph --decorate --oneline --name-only
* 3f3cba1 (HEAD, master) I
I
* 4c8b369 H
E/H
* a008343 rm F
E/F
* 525a127 FG
E/F
E/G
* 3a10f93 initial
A
B
C
D
E/F
以下を使用して、削除されたF
ファイルを検索します。
$ git find-deleted-file F
a008343eec91fe917078209d44ae93ee72fc5acb E/F
F