ありますか git stash
変更を隠しますが、作業ディレクトリにも保存しますか?したがって、基本的にgit stash; git stash apply
ワンステップで?
価値があるものとして、これを行う別の方法は、保持したい変更をステージングし、--keep-index
を使用してすべてを隠します:
$ git add modified-file.txt
$ git stash save --keep-index
上記のコマンドはmodified-file.txt
を含むすべてを隠しますが、そのファイルをステージングして作業ディレクトリに残します。
git stash
の公式Linux Kernel Gitドキュメント から:
--keep-index
オプションを使用すると、インデックスに既に追加されているすべての変更はそのまま残ります。
git stash
その後 git stash apply
(git stash && git stash apply
)はファイルをスタッシュし、その直後にスタッシュを適用します。結局のところ、stashと作業ディレクトリに変更を加えることができます。
必要に応じてエイリアスを作成できます。このようなものを~/.gitconfig
:
[alias]
sta = "!git stash && git stash apply"
このアプローチの欠点は、すべてのファイルが隠されて再作成されることです。これは、問題のファイルのタイムスタンプが変更されることを意味します。 (ファイルを保存しようとすると、git sta
、およびmake
または友人を使用している場合は、不必要な再構築を引き起こす可能性があります。)
実際に使用する可能性がある回答の小さな拡張。
$ git add modified-file.txt
(OR $ git add . ---- for all modified file)
$ git stash save --keep-index "Your Comment"
あなたを助けるかもしれないトリックがあります、隠れるものではなく、FWIW:
git add -A
git commit -m "this is what's called stashing" (create new stash commit)
git tag stash (mark the commit with 'stash' tag)
git reset HEAD~ (Now go back to where you've left with your working dir intact)
そして今、あなたは自由にstashとタグ付けされたコミットを持っているので、git stash pop
とにかく、そこからパッチの作成やファイルのリセットなどを行うことができますが、作業ディレクトリのファイルもそのまま残されます。