使用git stash list显示带有ID的存储列表.使用git stash list --date=local或git stash list --date=relative给我他们的时间,但我不知道他们的相应ID是什么.
我想在某个时间获得藏匿.
tor*_*rek 26
git stash list只需git log使用一组特定的选项运行:
list_stash () {
have_stash || return 0
git log --format="%gd: %gs" -g --first-parent -m "$@" $ref_stash --
}
Run Code Online (Sandbox Code Playgroud)
该$@部件会插入您指定的任何其他选项(默认情况下没有,但--date=relative在这种情况下).1
当你使用--date=relative它修改输出时%gd:而不是带索引的短reflog,你得到一个带有相对时间戳的简短reflog :
$ git stash list
stash@{0}: ...
$ git stash list --date=relative
stash@{4 minutes ago}: ...
Run Code Online (Sandbox Code Playgroud)
在这种情况下,解决方案是使用您自己的显式格式,而不是仅仅--date=relative修改如何%gd显示.例如:
$ git stash list --format='%gd (%cr): %gs'
stash@{0} (4 minutes ago): ...
Run Code Online (Sandbox Code Playgroud)
(%cr以相对格式插入提交的提交者时间戳 - 一旦你知道所有人git stash都为你做了几次提交,这一点就有意义了,提交存储在特殊的stashref而不是分支上).
1在回顾这个答案时,我注意到,由于这个论点,--first-parent和-m参数(字面上存在于git stash代码中)最初似乎是多余的-g.该-g来的说法git log告诉它仅仅在引用日志,而不是提交历史,在这种情况下,--first-parent没有任何意义.同时-m告诉git diff分割合并提交,但我们正在查看提交日志,而不是差异,那么这在做什么呢?
答案是git log 可以显示一个补丁,它可以运行git diff,所以如果你给出-p一个参数,那么--first-parent -m这个差异限制了比较隐藏reflog指向其第一个父对象的提交.reflog入口指向的存储包提交是工作树提交,其第一个父进程是存储包挂起的原始提交.(它的第二个父级是索引提交,它的第三个父级,如果存在,则是全部或未跟踪的文件提交.)因此,这些选项可以使git stash list -p存储的工作树提交与存储本身存在时的当前提交相区别.制作.
这很聪明,但相当模糊!:-)
nne*_*neo 13
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 <brx@cs.cmu.edu>
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}'
Run Code Online (Sandbox Code Playgroud)
根本不需要获取藏匿的ID!date=relative只要相对日期是唯一的,这甚至可以使用.
| 归档时间: |
|
| 查看次数: |
5331 次 |
| 最近记录: |