我知道你可以使用gitreviews(1)中的:/<text>
-语法来选择一个版本号,例如:
git show :/"new change"
字符串
将在提交消息中显示(最年轻的可达)带有“新更改”的提交。
我也经常使用这个特性来git show
特定版本中的blob,例如。
git show myBranch:./coolFile.csv
型
查看coolFile.csv
的全部内容(在我的相对路径中)* 在修订版 * myBranch
的状态下。
现在我的问题是:我可以使用:/<text>
语法选择一个修订版本,然后在该修订版本中显示一个blob吗?
git show (:/"new change"):./coolFile.csv
git show :/"new change":./coolFile.csv
型
抛出了错误
fatal:ambiguous argument ':/new change:./coolFile. csv':未知的修订版本或路径不在工作树中。
使用'--'将路径与修订分开,如下所示:
'git [...] -- [...]'
所以我试
git show :/"new change" -- ./coolFile.csv
型
它什么也不打印,因为该语法只打印该文件中该版本的更改。
2条答案
按热度按时间2admgd591#
你可以使用command substitution:
字符串
(Here
git rev-list
仅输出所需的修订散列)y0u0uwnf2#
命令替换(如Romain Valeri's answer)或其他一些两步过程通常是要走的路。但是,请注意,这里的问题是语法:
:/regex
没有办法 * 终止 * 正则表达式并恢复修订说明符。如果我们看看the gitrevisions documentation,我们发现这个:/regex
或:/<text>
语法:.命名提交消息与指定正则表达式匹配的提交。此名称返回可从**any ref(包括HEAD)**访问的最年轻的匹配提交
(黑体字我的)。
在
:/<text>
的上述描述中,我们发现:^{/<text>}, e.g. HEAD^{/fix nasty bug}
个是这样描述的:
.与下面的
:/fix nasty bug
语法相同,只是它返回可从^
之前的<rev>
访问的最年轻的匹配提交。HEAD
或其他单个ref中搜索,而不是从 every ref中搜索,你可以用HEAD^{/foo}
代替:/foo
,这个 * 可以 * 后面跟着:./coolFile.csv
:字符串
一些revspec参数不能被附加到的事实在一些shell脚本Git命令中被忽略了一段时间,人们做了这样的事情:
型
而实际上我们必须做的是:
型
例如在
$1
读取:/fix nasty bug
的情况下。