[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
2022-03-14 12:08:17
質問
Git リポジトリにいるとします。あるファイルを削除し、その変更をコミットしました。作業を続け、さらにいくつかのコミットを行いました。そして、そのファイルを復元する必要があることに気づきました。
を使用してファイルをチェックアウトできることは知っています。
git checkout HEAD^ foo.bar
しかし、そのファイルがいつ削除されたのかがよくわからないのです。
- 指定されたファイル名を削除したコミットを見つける最も早い方法は何でしょうか?
- そのファイルを作業コピーに戻す最も簡単な方法は何でしょうか?
私は、手動でログを参照し、指定されたSHAについてプロジェクト全体をチェックアウトし、その後手動でそのファイルを私の元のプロジェクトのチェックアウトにコピーする必要がないことを望んでいます。
どのように解決するのですか?
指定されたパスに影響を与えた最後のコミットを検索します。そのファイルは HEAD コミットにないので、その前のコミットがそれを削除したに違いありません。
git rev-list -n 1 HEAD -- <file_path>
次に、前のコミットでのバージョンをチェックアウトし、キャレット(
^
)記号を使用します。
git checkout <deleting_commit>^ -- <file_path>
または1つのコマンドで、もし
$file
が該当するファイルです。
git checkout $(git rev-list -n 1 HEAD -- "$file")^ -- "$file"
zshを使用していて、EXTENDED_GLOBオプションを有効にしている場合、キャレット記号は機能しません。その場合は
~1
の代わりに
git checkout $(git rev-list -n 1 HEAD -- "$file")~1 -- "$file"
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] ファイルをリセットしたり、特定のリビジョンに戻したりするにはどうすればよいですか?
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み] git rebase の取り消し
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [email protected] へのいくつかの参考文献のプッシュに失敗しました。
-
[解決済み】GitHubで空のブランチを作成する
-
[解決済み] [Solved] 作業ツリーのディレクトリ 'example.com' を作成できませんでした。パーミッションが拒否されました
-
git revert 複数コミット
-
git commit リモートエラー [rejected] master -> master (フェッチファースト)
-
[解決済み】ローカルGitブランチとそのリモートブランチを比較する方法
-
[解決済み] [Solved] originにプッシュしようとすると、Gitが「No such remote 'origin'」と言うのはなぜですか?
-
[解決済み] git status に fatal: bad object HEAD と表示される。
-
[解決済み] GitBash | origin master - rejected (fetch first) | GitHub リポジトリにファイルがない。
-
[解決済み] Gitのフォルダ構造で変更・追加されたファイルのみをエクスポートする機能