変更内容をスタッシュしました。今度は、スタッシュから一部のファイルのみをアンスタッシュしたいです。どうすればいいでしょうか?
ベストアンサー1
として下記参照、および詳細は「Git スタッシュから単一のファイル (またはファイルへの変更) を抽出するにはどうすればよいですか?「」を申請することができますgit checkout
またはgit show
特定のファイルを復元します。
git checkout stash@{0} -- <filename>
Git 2.23以降(2019年8月)では、git restore
、これは紛らわしいgit checkout
コマンド:
git restore --source=stash@{0} -- <filename>
上書きさ れますfilename
。ローカルの変更がないことを確認してください。そうでない場合は、代わりに保存されたファイル。
(としてコメントしたによるジェイミー・Mtcsh のような特殊文字をエスケープする必要がある特定のシェルの場合、構文は次のようになります。git checkout 'stash@{0}' -- <filename>
)
または別のファイル名で保存するには:
git show stash@{0}:<full filename> > <newfile>
(ここでは、
<full filename>
プロジェクトの最上位ディレクトリを基準としたファイルの完全なパス名であることに注意してください ( に相対的であると考えてくださいstash@{0}
))。
そのファイルから適用する変更を手動で選択する場合:
git difftool stash@{0}..HEAD -- <filename>
# or
git checkout -p stash@{0} -- <filename>
git checkout stash@{0} -- <filename>
「 」は、スタッシュが実行された時点のファイルのバージョンを復元するようです。そのファイルに対してスタッシュされた変更だけを適用するわけではありません
。後者を実行するには、次の手順を実行します。
git diff stash@{0}^1 stash@{0} -- <filename> | git apply
(としてコメントしたによるピーターフリン| git apply -p1
場合によっては、従来の diff パスから先頭のスラッシュを 1 つ削除する必要があるかもしれませんp1
)
コメントされているように、「unstash」(git stash pop
)すると、次のようになります。
- 保存したいものをインデックスに追加します(
git add
) - 残りを保管します:
git stash --keep-index
最後のポイントは、一部のファイルを保存しながら他のファイルを隠せるようにすることです。
これは「変更された複数のファイルのうち 1 つのファイルだけをスタッシュする方法「」。