3
brace expansionをgitrevisions syntaxとすると、難しい問題が発生しました。gitrevisionsでブレース拡張を使用する方法<text>
具体的には、get the Git commit IDs for some specific commit messagesにします。ここでは、ログは次のとおりです。私は回避策としてコミット5と10のコミットIDを返すようにしたい
$ git log --format=oneline
924d9120dec9f61d0f99a5155c51bad63d24b37f Commit 10
c62b2f68ea6b8ff047dd5f1e99010ebf434709ef Commit 9
feec2d76977521018ff33fd6e109530fdb69291d Commit 8
9a25b2ea11d0aa19af33761c7c81bd10d0f17949 Commit 7
c7b02e556738e7cd2a2459e07af731e5677ab090 Commit 6
1bf5b98cf90340e714bd0bd13c7721f94749fa5f Commit 5
8a9c25eda46b3424a870584e4a8a4f90f6e5aa2c Commit 4
0ecf2464ec82a3aa74abb6f6c2127315ef4c2495 Commit 3
e18bdb2ae52f2149421965ff69d96dba46cd7c0a Commit 2
cf10d47067bef60ae787e5421e32b4541bdf52be Commit 1
、私はfor
ループ内で使用してこのシェル変数の操作を行うことができます
$ for i in {5,10}; do git rev-parse :/"Commit $i"; done
1bf5b98cf90340e714bd0bd13c7721f94749fa5f
924d9120dec9f61d0f99a5155c51bad63d24b37f
しかし、私より簡潔なソリューションを好むでしょう。残念ながら、ブレース展開は、様々なエスケープシーケンスを試みさえして、ここで働いていないよう:
$ git rev-parse :/"Commit {5,10}" # No escaping used
:/Commit {5,10}
fatal: ambiguous argument ':/Commit {5,10}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
$ git rev-parse :/"Commit \{5,10\}" # Attempt to pass braces to shell for expansion
:/Commit \{5,10\}
fatal: ambiguous argument ':/Commit \{5,10\}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
'私のために{5,10} 'と' for i in 5 10'はまったく同じですが、中括弧拡張では2つの余分な文字を入力する必要があります。 BEは、連続したコミットの範囲があった場合にのみここで役立ちます。 – chepner