特定のファイルをgit stashするにはどうすればいいですか? 質問する

特定のファイルをgit stashするにはどうすればいいですか? 質問する

保存しようとしているスタッシュから、現在変更されている他のファイルを除外して、特定のファイルをスタッシュするにはどうすればよいでしょうか?

たとえば、git status で次の結果が返された場合:

younker % gst      
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   app/controllers/cart_controller.php
#   modified:   app/views/cart/welcome.thtml
#
no changes added to commit (use "git add" and/or "git commit -a")

app/views/cart/welcome.thtml だけを保存したいのですが、どうすればいいでしょうか? 次のような感じです (もちろんこれは機能しません):

git stash save welcome_cart app/views/cart/welcome.thtml

ベストアンサー1

編集: git 2.13 以降では、特定のパスを stash に保存するコマンドがあります: git stash push <path>。例:

git stash push -m welcome_cart app/views/cart/welcome.thtml

古い答え:

git stash --patch(または)を使用してこれを行うことができますgit stash -p。インタラクティブ モードに入り、変更された各ハンクが表示されます。 を使用すると、nスタッシュしたくないファイルをスキップし、yスタッシュしたいファイルに遭遇したときには、 を使用し、q終了して残りのハンクをスタッシュしないままにします。 は、a表示されているハンクとそのファイル内の残りのハンクをスタッシュします。

最もユーザーフレンドリーなアプローチではありませんが、本当に必要な場合には作業を完了できます。

おすすめ記事