git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
1つのファイルの変更を元に戻す方法もgitを参照してください?
2019年8月更新、Git 2.23
新しいとgit switch
してgit restore
コマンド、それは次のようになります。
git switch master
git restore -s experiment -- app.js
デフォルトでは、作業ツリーのみが復元されます。
あなたにもインデックスを更新する場合(ファイルの内容を復元し、意味と 1つのコマンドでインデックスに追加):
git restore -s experiment --staged --worktree -- app.js
# shorter:
git restore -s experiment -WS -- app.js
以下のようヤクブNarębskiはコメントで言及します:
git show experiment:path/to/app.js > path/to/app.js
ただし、SOの質問「Gitの特定のリビジョンから単一のファイルを取得する方法」で詳しく説明されているように、リポジトリのルートディレクトリからの完全パスを使用する必要があります。
したがって、Jakubが彼の例で使用したパス/to/app.jsです。
以下のようフロスティはコメントに言及します:
app.jsの最新の状態のみを取得します
しかし、git checkout
またはgit show
については、SO質問「git gui内のファイルのgit checkoutリビジョン」で示されているように、実際に必要なリビジョンを参照できます。
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
$ FILENAMEはバージョン管理されたファイルの完全パスです。
$REVISION
に示すようにすることができますgit rev-parse
:
experiment@{yesterday}:app.js # app.js as it was yesterday
experiment^:app.js # app.js on the first commit parent
experiment@{2}:app.js # app.js two commits ago
等々。
schmijosがコメントに追加します。
スタッシュからこれを行うこともできます:
git checkout stash -- app.js
これは、2つのブランチで作業していて、コミットしたくない場合に非常に便利です。