回答:
最新の隠し場所を見る:
git stash show -p
任意の隠し場所を参照してください。
git stash show -p stash@{1}
git stash
マンページから:
デフォルトでは、コマンドはdiffstatを表示しますが、git diffで認識されている任意の形式を受け入れます(たとえば、2番目に新しいstashをパッチ形式で表示するには、git stash show -p stash @ {1})。
stash@{0}
デフォルトです。以前の隠し場所を確認する場合にのみ、引数が必要です。
{0}
。
-p
略ですか?
最新の隠し場所を表示するには:
git stash show -p
任意の隠し場所を表示するには:
git stash show -p stash@{1}
また、私はgit diffを使用して、スタッシュを任意のブランチと比較します。
以下を使用できます。
git diff stash@{0} master
ブランチマスターと比較したすべての変更を確認します。
またはあなたが使うことができます:
git diff --name-only stash@{0} master
変更されたファイル名のみを簡単に見つけるため。
git diff stash@{0} master
行ってから、現在のマスター(スタッシュ後にマスターで行われた作業を含む)に対するスタッシュの差分を取得します作成されました)、スタッシュが変更するファイル/行ではなく、それが問題です。
git difftool --tool=... stash@{0} HEAD
git diff stash@{0}^ stash@{0}
git diff stash@{0} master -- filename
を追加して、特定のファイルへの変更を取得できます。
隠された変更のベースとなっているブランチがその間に変更された場合、このコマンドが役立つことがあります。
git diff stash@{0}^!
これにより、スタッシュとそれに基づくコミットが比較されます。
~/.gitconfig
:laststash = diff stash@{0}^!
git difftool stash^!
コミットに対する最後の隠し場所のgit difftool stash HEAD
差分、現在のコミットに対する最後の隠し場所の差分(以前の隠し場所はstash @ {n})
作業ツリーがダーティである場合は、まずダーティ作業ツリーをコミットしてから、スタッシュと比較することで、スタッシュと比較できます。その後、ダーティな作業ツリーでコミットを取り消すことができます(コミットログにダーティコミットを入れたくない場合があるため)。
次の方法を使用して、2つのスタッシュを互いに比較することもできます(この場合、最初にスタッシュの1つをポップするだけです)。
汚い作業ツリーをコミットします。
git add .
git commit -m "Dirty commit"
そのコミットで隠し場所を比較します。
git diff HEAD stash@{0}
その後、コミットを元に戻して、作業ディレクトリに戻すことができます。
git reset --soft HEAD~1
git reset .
これで、汚れた作業ツリーをスタッシュで比較し、最初の状態に戻りました。
git stash show -l
。最新の隠し場所を作業用(ダーティー)コピーと比較しますか?取得せずにどのように使用しますerror: switch l requires a value
か?
git stash show -l
。それがあなたにとってうまくいかない理由について、私はあなたが古いバージョンのgitを使用している可能性があると推測できますか?私はgit v2.20.1を使用しており、エラーなしで問題なく動作します。
@Magneの回答は、質問の最も柔軟で有用な解釈に答える唯一の(非常に遅い)日付ですが、必要以上にかなり複雑です。コミットしてリセットするのではなく、作業コピーを隠し、比較して、元に戻すだけです。
git stash save "temp"
git diff stash@{0} stash@{1}
git stash pop
これは、作業フォルダーの変更を一時的にstashスタックの最上部(stash @ {0})にして、元の上部を1つ下(stash @ {1})に移動することにより、stashスタックの最上部と作業フォルダーの違いを示しています。 )次に、「新しいセット」の位置で元のトップを使用して比較し、現在の作業の上にそれを適用した結果生じる変更を確認します。
「でも、現在仕事がない場合はどうなりますか?」 その後、通常の退屈なケースになります。@Amberの回答を使用してください
git stash show
または@czeraszの答え
git diff stash@{0}
または、スタッシュとスタッシュ解除が高速で簡単であることを認め、変更をスタッシュ解除して検査します。現時点で必要ない場合は、それらを破棄します(現在のインデックス/作業フォルダーの変更)。完全に
git stash apply
git diff
git reset
git checkout
git stash save -u
これは私のためにgitバージョン1.8.5.2で動作します:
git diff stash HEAD
git stash apply
。
比較のためのツールなど、diffのツールがある場合
git difftool stash HEAD
git stash apply
。
HEAD
ます。@yerlilbilginの回答を変更してHEADを削除することもできますが、gitを使用する人ならだれでもその部分を理解できるため、回答を長くすると読みにくくなります。@yerlibilginに責任はありません。
FWIW これは、他のすべての回答に対して少し冗長である可能性があり、スポットされている受け入れられた回答に非常に似ています。多分それは誰かを助けるでしょう。
git stash show --help
あなたが必要とするすべてをあなたに与えます; stashショー情報を含みます。
ショー[<stash>]
stashに記録された変更を、stashされた状態とその元の親との差分として表示します。指定がない場合は最新のものを表示します。デフォルトでは、コマンドはdiffstatを表示しますが、git diffで認識されている任意の形式を受け入れます(たとえば、2番目に新しいstashをパッチ形式で表示するには、git stash show -p stash @ {1})。stash.showStatおよび/またはstash.showPatch構成変数を使用して、デフォルトの動作を変更できます。
彼女は隠し場所のリスト
git stash list
stash@{0}: WIP on feature/blabla: 830335224fa Name Commit
stash@{1}: WIP on feature/blabla2: 830335224fa Name Commit 2
スタッシュ番号を取得して実行します。
できるよ:
git stash show -p stash@{1}
ただし、差分が必要な場合(これは隠し場所を示すのとは異なります。それが、私がこの回答を書く理由です。Diff
ブランチの現在のコードを検討し、show
何を適用するかを示すだけです。)
以下を使用できます。
git diff stash@{0}
または
git diff stash@{0} <branch name>
もう1つの興味深いことは、次のとおりです。
git stash apply
git stash apply stash@{10}
これはリストから削除せずにスタッシュを適用します。git checkout .
それらの変更を削除したり、満足している場合はgit stash drop stash@{10}
。
ここから私が使用することをお勧めしませんgit stash pop
との組み合わせを使用git stash apply
してgit stash drop
、あなたが間違ったブランチにスタッシュを適用した場合...よく、時にはあなたのコードを回復することは困難です。
スタッシュと比較したいもの(ローカル作業ツリー/親コミット/ヘッドコミット)に応じて、実際にはいくつかのコマンドが利用可能で、その中に古き良きものgit diff
、より具体的なものがありgit stash show
ます。
╔══════════════════════╦═══════════════════════════════╦═══════════════════╗
║ Compare stash with ↓ ║ git diff ║ git stash show ║
╠══════════════════════╬═══════════════════════════════╬═══════════════════╣
║ Local working tree ║ git diff stash@{0} ║ git stash show -l ║
║----------------------║-------------------------------║-------------------║
║ Parent commit ║ git diff stash@{0}^ stash@{0} ║ git stash show -p ║
║----------------------║-------------------------------║-------------------║
║ HEAD commit ║ git diff stash@{0} HEAD ║ / ║
╚══════════════════════╩═══════════════════════════════╩═══════════════════╝
一方でgit stash show
一目でルックスよりユーザーフレンドリー、git diff
実際にはより強力な、それはより集中差分のためのファイル名を指定することができますということです。私は自分のzsh gitプラグインでこれらすべてのコマンドのエイリアスを個人的に設定しました。