web-dev-qa-db-ja.com

スタッシュIDの横にスタッシュの日付/タイムスタンプを表示するにはどうすればよいですか?

git stash listを使用すると、ID付きの隠し場所のリストが表示されます。 git stash list --date=localまたはgit stash list --date=relativeを使用すると時間がわかりますが、対応するIDが何であるかわかりません。

いつか隠し場所を手に入れたい。

25
LazerSharks

_git stash list_は、特定のオプションセットを使用して_git log_を実行するだけです。

_list_stash () {
        have_stash || return 0
        git log --format="%Gd: %gs" -g --first-parent -m "$@" $ref_stash --
}
_

_$@_部分は、指定した追加オプションを挿入します(デフォルトではなしですが、この場合は_--date=relative_)。1

_--date=relative_を使用すると、_%Gd_からの出力が変更されます。indexを含む短いreflogの代わりに、/を含む短いreflogを取得します。相対タイムスタンプ

_$ git stash list
stash@{0}: ...
$ git stash list --date=relative
stash@{4 minutes ago}: ...
_

この場合の解決策は、_--date=relative_に_%Gd_の表示方法を変更させるのではなく、独自の明示的な形式を使用することです。例えば:

_$ git stash list --format='%Gd (%cr): %gs'
stash@{0} (4 minutes ago): ...
_

(_%cr_は、コミットのコミッタータイムスタンプを相対形式で挿入します。これは、_git stash_が行うすべてのコミットが、特別なstash refに格納されている、いくつかのコミットを行うことであることがわかったら意味があります。ブランチではなく)。


1この回答を確認すると、_--first-parent_引数(文字通り_-m_コードに存在)_git stash_および_-g_引数は、最初は冗長に見えることに注意してください。 _-g_の_git log_引数は、コミット履歴ではなく、reflogのみを参照するように指示します。この場合、_--first-parent_は何も意味しません。一方、_-m_は_git diff_にマージコミットを分割するように指示しますが、差分ではなくコミットログを調べているので、これはここで何をしているのでしょうか。

答えは、_git log_canは、_git diff_を実行するパッチを表示するため、引数として_-p_を指定すると、_--first-parent -m_は、この差分を、stashreflogが指すコミットを最初の親と比較するように制限します。 stash bag reflogエントリポイントが作業ツリーコミットであるコミット。 first親は、stash-が存在する元のコミットです。バッグがぶら下がっています。 (その2番目の親はインデックスのコミットであり、3番目の親が存在する場合は、すべてまたは追跡されていないファイルのコミットです。)したがって、これらのオプションは、_git stash list -p_を現在のコミットに対してスタッシュのワークツリーコミットと比較するためにあります。隠し場所自体が作られたとき。

これは賢いですが、かなりあいまいです! :-)

28
torek

Stashを参照するときは、実際にはstash@<date>構文を直接使用できます。

$ git stash list --date=local
stash@{Sun Dec 21 22:32:14 2014}: WIP on develop: 7142a6e Update data files
stash@{Fri Dec 12 10:02:20 2014}: WIP on develop: c72abda Add initial calibration data
stash@{Wed Dec 10 10:02:05 2014}: WIP on master: 1d27422 Bug fix for gadgeteer
$ git show 'stash@{Fri Dec 12 10:02:20 2014}'
commit a096484501caf14942f01a6500a5d0c3476d3145
Merge: c72abda 861fff6
Author: Robert Xiao <[email protected]>
Date:   Fri Dec 12 13:02:20 2014 -0500

    WIP on develop: c72abda Add initial calibration data
...
$ git stash pop 'stash@{Fri Dec 12 10:02:20 2014}'

隠し場所のIDを取得する必要はまったくありません!これは、相対的な日付が一意である限り、date=relativeでも機能します。

14
nneonneo