回答:
git stash show
最新のスタッシュで変更されたファイルが表示されます。-p
差分を表示するオプションを追加できます。
git stash show -p
関心のあるスタッシュが最新のものではない場合は、スタッシュの名前をコマンドの最後に追加します。
git stash show -p stash@{2}
fatal: unable to create temp-file: Invalid argument
-何か考えがありますか?
git stash show -p stash@{0}
特定の隠し場所を表示するために使用します。0は最後のトーンを示し、1は最後のトーンを示します。等々git stash list
はすべての利用可能なトーンを示します。
git stash show -p 'stash@{0}'
)
git stash show -p stash@{0}> stash.txt
私はのgitk
gitリポジトリを視覚化するグラフィカルUIのファンです。あなたは次のもので隠された最後のアイテムを見ることができます:
gitk stash
隠された変更を表示することもできます(で一覧表示git stash list
)。例えば:
gitk stash@{2}
以下のスクリーンショットでは、スタッシュが左上にコミットとして、いつ、どこからコミット履歴に来たか、右下に変更されたファイルのリスト、および下部に行ごとの差分が表示されます。 -左。隠し場所がまだ隠されている間はずっと。
stash@{X}
コマンドラインで複数の値を指定して、より多くの結果を一度に表示できますが、gitkで「すべてのstashエントリを表示」と言うだけの簡単な方法は見つかりませんでした。
gitk stash
短縮形のようですgitk stash@{0}
gitk `git stash list --pretty=format:%gd`
、「WIPオン」を検索して次のスタッシュにジャンプします。
gitk --reflog
すべての隠し場所などを表示できます。
ポップされていないスタッシュのすべての変更を表示するには:
git stash show -p stash@{0}
ポップされていないスタッシュで特定のファイルの変更を表示するには:
git diff HEAD stash@{0} -- path/to/filename.php
-p
略です--patch
。オプションはから来ますgit-diff
。あなたが長い形式を好むなら、あなたは書くことができますgit stash show --patch
。
のgitkの推奨事項を超えていますgitでスタッシュの内容をプレビューすることは可能ですか?あなたはtigをインストールして呼び出すことができますtig stash
。このフリー/オープンコンソールプログラムでは、比較するスタッシュを選択することもできます
P
!
gitk
にとって、すべての隠し場所を表示するためにハッキングするのは比較的簡単です。
私はこれを使用して、すべての隠し場所をカラー差分強調表示で表示します(Fedora 21上):
git stash list |
awk -F: '{ print "\n\n\n\n"; print $0; print "\n\n";
system("git -c color.ui=always stash show -p " $1); }' |
less -R
(Gitからの変更:stashを適用せずにstashの内容を確認する)
次のコマンドですべてのスタッシュのリストを表示できます。
$ git stash list
stash@{0}: WIP on dev: ddd4d75 spelling fix
stash@{1}: WIP on dev: 40e65a8 setting width for messages
......
......
......
stash@{12}: WIP on dev: 264fdab added token based auth
最新の隠し場所は最初のものです。
n
上記のリストにあるスタッシュのインデックスを選択し、次のコマンドを使用して、スタッシュされた詳細を表示できます
git stash show -p stash@{3}
同様に、
git stash show -p stash@{n}
次のコマンドを使用して、diffを確認することもできます。
git diff HEAD stash@{n} -- /path/to/file
はい、変更内容を確認する最良の方法は、次のようにファイルに保存することです。
git stash show -p stash@{0} > stash.txt
最初に、すべてのstashアイテムを取得するためにgit stashリストを利用できます。
$git stash list
stash@{0}: WIP on ...
stash@{1}: WIP on ....
stash@{2}: WIP on ...
次に、を使用しgit stash show stash@{N}
て、特定のstashの下にあるファイルをチェックできますN
。発砲すると、次のようになります。
$ git stash show stash@{2}
fatal: ambiguous argument 'stash@2': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
これは、シェルが中括弧とgit sees stash@2
を食べているのではなく、食べていることが原因である可能性がありstash@{2}
ます。これを修正するには、中かっこの単一引用符を次のように使用する必要があります。
git stash show stash@'{2'}
com/java/myproject/my-xml-impl.xml | 16 ++++++++--------
com/java/myproject/MyJavaClass.java | 16 ++++++++--------
etc.
ファイル名のみ:
for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show $i; done
すべてのスタッシュの完全なファイル内容:
for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show -p $i; done
あなたが持つページができることを色づけdiffの出力を取得しますspace (前方)及びb(後方)、およびq現在のスタッシュのためのページャを閉じます。ファイルに入れたい場合は> stashes.diff
、コマンドに追加します。
使用を提案する既存の回答に加えて(最後から3番目のスタッシュの差分を表示するため)
git stash show -p stash@{2}
git-stash
ドキュメントでは、次のように書かれていることに注意してください
スタッシュは、スタッシュインデックスのみを指定することによっても参照できます(たとえば、整数
n
はと同等ですstash@{n}
)。
したがって、使用することも可能です(これは上記のコマンドと同等です)。
git stash show -p 2
これにより、Powershellの問題も回避できます。
gitk
追跡されていないものやインデックスに座っているものを正確に示す方法が好きですが、デフォルトでは、現在のブランチの他のすべてのコミットの真ん中にそれらのスタッシュ「コミット」が表示されます。
トリックは次のようにgitkを実行することです:
gitk "stash@{0}^!"
(引用は、Powershellで機能させるためにありますが、この方法でも他のシェルでも機能するはずです。)
gitrevisionsのヘルプページでこの構文を調べると、次のことがわかります。
r1^!
表記はコミット含み、R1が、そのすべての親の除外を。単独では、この表記は単一のコミットr1を示します。
これはどうやらgitkを、選択したコミットの直接の親だけが表示されるようなモードにします。これはまさに私の好みです。
これをさらに進めてすべてのスタッシュをリストしたい場合は、これを実行できます:
gitk `git stash list '--pretty=format:%gd^!'`
(バッククォート内のこれらの一重引用符はBashをなだめるために必要です。それ以外の場合は感嘆符について不平を言います)
WindowsでcmdまたはPowershellを使用している場合:
gitk "--argscmd=git stash list --pretty=format:%gd^!"
次のコマンドを使用して、隠された変更の差分を他の隠し場所、コミット、またはブランチまたはHEADから再度抽出できます。
git stash show
git show
git diff
git difftool
上記の各コマンドをどのように使用できるか見てみましょう。
単純なコマンドgit stash showは、ファイルの変更の非常に短い要約を提供しますが、現在のHEADに対する変更の差分を表示しません。
コマンドgit-showは、さまざまなタイプのオブジェクトを表示するために使用されます。
コマンドgit-showは、スタッシュの変更を視覚化するためだけでなく、ブロブ、ツリー、タグ、コミットなどの1つ以上のオブジェクトを表示するためにも使用されます。
コマンドgit-diffも、コミット、コミットと作業ツリーなどの間の変更を表示するために使用される一般的なコマンドの1つです。
デフォルトでは、他のstash参照またはコミットが指定されていない限り、git diffは選択されたstashの差分を(変更されたファイル)リポジトリの現在の状態に対して表示します。
最上位のstash stash @ {0}とマスターブランチの違いを取得するには:
$ git diff stash @ {0}マスター
変更の差分ではなく、ファイルの名前のみを表示します。
$ git diff --name-only stash @ {0} master
選択したファイルの選択したスタッシュ間の相違を表示します。
$ git diff stash @ {0} ^ 1 stash @ {0}-
コマンドgit-difftoolを使用して、選択したstashと選択したコミットまたはブランチまたはstashの間の差分を見つけることもできます
最新の2つのスタッシュの違いを確認します。
$ git difftool stash @ {0} stash @ {0} ^ 1
git difftool --dir-diff stash @ {0} stash @ {0} ^ 1
概要:
選択したstash git stash show、git show、git diff、git difftoolから差分を抽出するのに役立つコマンド。
コマンドgit stash showを使用して違いを確認します。
git stash show -p stash @ {0}
コマンドgit showを使用してstashの変更を確認します。
git show stash @ {1}
コマンドgit diffを使用して、最新のスタッシュと選択したコミットの違いを確認します。
git diff stash @ {0}
参照:
https://howto.lintel.in/how-to-see-stashed-changes-using-git-stash/
git stash show -p stash@{1} >~/.diff && vim ~/.diff
必要はありません)。vim
diff