git stash
変更を隠し、作業ディレクトリにも保持するコマンドはありますか?だから基本的にgit stash; git stash apply
は一歩で?
git stash && git stash apply
。その質問への答えが私のものとはかなり違うことに気づくでしょう。
git stash
変更を隠し、作業ディレクトリにも保持するコマンドはありますか?だから基本的にgit stash; git stash apply
は一歩で?
git stash && git stash apply
。その質問への答えが私のものとはかなり違うことに気づくでしょう。
回答:
価値があることについて、これを行う別の方法は、保持したい変更をステージングしてから、次のものを使用してすべてを隠しておくことです--keep-index
。
$ git add modified-file.txt
$ git stash push --keep-index
上記のコマンドはすべてを隠しますが、作業ディレクトリにファイルがステージングされたままになります。
以下からの公式のLinuxカーネルGitのドキュメントgit stash
またはからのgit-SCM:
この
--keep-index
オプションを使用すると、インデックスに既に追加されているすべての変更がそのまま残ります。
git stash
その後、git stash apply
(git stash && git stash apply
)のファイルを隠しておくと、その直後にスタッシュを適用します。したがって、結局のところ、変更はstashと作業ディレクトリにあります。
必要な場合は、エイリアスを作成できます。このようなものを置くだけです~/.gitconfig
:
[alias]
sta = "!git stash && git stash apply"
このアプローチの欠点は、すべてのファイルが隠されて再作成されることです。これは、問題のファイルのタイムスタンプが変更されることを意味します。(私がを実行する前にファイルを開いた場合、ファイルを保存しようとするとEmacsが文句を言うgit sta
ので、あなたmake
や友人が使用している場合は不要な再構築が発生する可能性があります。)
git stash; git stash apply
とはgit stash && git stash apply
?
git stash save
、引数とし、それからやりますかgit stash apply
?
実用的に使用される可能性がある回答の小さな拡張。
$ 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)
そして今、あなたはあなたの自由に使えるコミットタグ付きスタッシュを持っgit stash pop
ています、とにかくそれを行うことは不可能ですが、そこからパッチの作成やファイルのリセットなどのことを行うことができ、作業中のdirファイルもそのままです。
を使用git stash create
してstashコミットを作成し、次を使用してstashに保存できますgit stash store
。
git stash store $(git stash create) -m "Stash commit message"
これをgitエイリアスに保存すると、より便利になります。
git config --global alias.stash-keep '!git stash store $(git stash create)'
git stash-keep -m "Stash commit message"
これはすべてのことを行うわけではないことに注意してくださいgit stash push
。たとえば、ブランチ名をコミットに追加しません(例: " stash@{0}: On myBranch: Stash commit message
")。
man git-stash
言う-m <message>
コミットハッシュの前に来る必要があります。最新のgitで何か変更がある場合を除きます。