単一のファイルからの変更だけを隠せるようにしたいと思います。
git stash save -- just_my_file.txt
ただし、上記は機能しません。代替案はありますか?
変更を隠したメッセージを指定したくない場合は、ファイル名を二重ダッシュの後に渡します。
$ git stash -- filename.ext
追跡されていない/新しいファイルの場合は、最初にステージングする必要があります。
ただし、メッセージを指定する場合はpush
、を使用してください。
git stash push -m "describe changes to filename.ext" filename.ext
どちらの方法もgitバージョン2.13以降で機能します
おそらくあなたが望む選択だと思いますstash -p
が、将来さらに厄介なことに遭遇した場合に備えて、次のことを覚えておいてください。
Stash
これは、実際には、ほんの少し複雑なbranch
セットの非常に単純な代替手段です。Stashは、物事をすばやく移動するのに非常に便利ですが、それほど多くの頭痛や作業をすることなく、ブランチを使用してより複雑なことを実行できます。
# git checkout -b tmpbranch
# git add the_file
# git commit -m "stashing the_file"
# git checkout master
行って、やりたいことを実行してから、後で単純rebase
におよび/またはmerge
tmpbranchを実行します。stashで許可されるよりも注意深い追跡を行う必要がある場合は、それほど余分な作業は必要ありません。
git stash -p
(に類似した)を使用して、1行をインタラクティブに隠しておくことができますgit add -p
。
dファイル名は必要ありませんが、隠したいファイルに到達し、そこにあるすべての変更を。で隠しておくまで、他のファイルをスキップすることができますa。
最良のオプションは、このファイル以外のすべてをステージングし、stashにインデックスを保持するように指示して、ステージングされていgit stash save --keep-index
ないファイルをstashすることです。
$ git add .
$ git reset thefiletostash
$ git stash save --keep-index
ダンが指摘するように、thefiletostash
スタッシュによってリセットされるのは1つだけですが、他のファイルもスタッシュするため、正確には必要なものではありません。
「gitstash」を使用するたびに「変更を破棄する」という意味の場合に備えて(実際にはgit stashを使用して一時的に隠してはいけません)、その場合は次のように使用できます。
git checkout -- <file>
git stashは、分岐して処理を行う代わりに、より迅速で簡単な方法であることに注意してください。