単一のファイルからの変更だけを隠しておきたい:
git stash save -- just_my_file.txt
ただし、上記は機能しません。代替案はありますか?
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を実行します。それは本当にありませんthat stashが許可するよりも注意深い追跡を行う必要がある場合、多くの余分な作業はありません。
git stash -p
(git add -p
に類似)を使用して、対話的に1行をスタッシュできます。
ファイル名は必要ありませんが、次のコマンドで他のファイルをスキップできます。 d 隠したいファイルに到達し、そこにあるすべての変更を隠します a。
最適なオプションは、このファイル以外のすべてをステージングし、git stash save --keep-index
でインデックスを保持するようにstashに指示し、ステージングされていないファイルをスタッシングすることです。
$ git add .
$ git reset thefiletostash
$ git stash save --keep-index
Danが指摘しているように、thefiletostash
はスタッシュによってリセットされる唯一のものですが、他のファイルもスタッシュするため、まさに望んでいるものではありません。
隠された変更を含むメッセージを指定したくない場合は、二重ダッシュの後にファイル名を渡します。
$ git stash -- filename.ext
追跡されていない/新しいファイルの場合は、最初にステージングする必要があります。
ただし、doメッセージを指定する場合は、Push
を使用します。
git stash Push -m "describe changes to filename.ext" filename.ext
どちらの方法もgitバージョン2.13以降で動作します
「git stash」を使用するたびに「変更を破棄する」ことを意味する場合(そして、一時的に隠しておくためにgit stashを実際に使用しないでください)、その場合は、
git checkout -- <file>
Git stashは、ブランチを作成したり実行したりするための、より迅速で単純な代替手段であることに注意してください。