1. ホーム
  2. git

[解決済み] 特定のファイルを git stash するにはどうしたらいいですか?

2022-03-14 17:43:40

質問

特定のファイルだけを保存して、他のファイルは保存しないようにするにはどうしたらいいですか?

例えば、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

解決方法は?

EDITです。 git 2.13以降では、stashに特定のパスを保存するコマンドが用意されています。 git stash push <path> . 例えば

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

OLD ANSWERです。

を使って行うことができます。 git stash --patch (または git stash -p ) -- 対話モードになり、変更された各ハンクが表示されます。使用方法 n を使うと、隠したくないファイルをスキップすることができます。 y を、隠したいものに遭遇したら q で終了し、残りのハンクは隠さずに残しておきます。 a は、表示されているハンクと、そのファイルにある残りのハンクを格納します。

最も使いやすい方法とは言えませんが、本当に必要な場合はこれで仕事を終わらせることができます。