1. ホーム
  2. git

[解決済み] 特定のファイルだけをアンスタッシュする方法は?

2022-03-21 16:57:05

質問

変更を保存しました。今、私は隠し場所からいくつかのファイルだけを解き放ちたいと思います。どうすればいいでしょうか?

解決方法は?

として 以下のとおりです。 で詳しく説明しています。 git stash から単一のファイル (またはファイルへの変更) を抽出するにはどうすればよいですか? を使用することができます。 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 をマージする必要があるかもしれません。 を保存しています。 .

(以下 コメント によって ハイメ M. のように、特殊文字をエスケープする必要がある場合、その構文は次のようになります。 git checkout 'stash@{0}' -- <filename> )

<ブロッククオート

または別のファイル名で保存します。

git show stash@{0}:<full filename>  >  <newfile>

(ただし、ここでは <full filename> はプロジェクトのトップディレクトリからの相対的なファイルのフルパス名です(例) stash@{0} )).

ユーカー 提案 コメント欄 :

そのファイルからどの変更を適用するかを手動で選択したい場合。

git difftool stash@{0}..HEAD -- <filename>

ビベック が追加されます。 コメントで :

見た目は"。 git checkout stash@{0} -- <filename> "は、stashが実行された時点のファイルのバージョンをリストアする -- それは、次のようになります。 ない は、そのファイルに対して、隠した変更を適用する(だけ)。
後者を行うには

git diff stash@{0}^1 stash@{0} -- <filename> | git apply

(として コメント によって ピーターフリン が必要かもしれません。 | git apply -p1 を1つ削除することで、場合によっては p1 ) の先頭のスラッシュが表示されます)


コメント通り: "unstash"(以下略 git stash pop )であれば

  • インデックスに保存したいものを追加する ( git add )
  • 残りをためる git stash --keep-index

最後のポイントは、あるファイルを残し、他のファイルをためることができる点です。
図解は、" 変更された複数のファイルのうち、1ファイルだけを保存する方法 となります。