2017-06-17 3 views
3

brace expansiongitrevisions 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>...]' 
+0

'私のために{5,10} 'と' for i in 5 10'はまったく同じですが、中括弧拡張では2つの余分な文字を入力する必要があります。 BEは、連続したコミットの範囲があった場合にのみここで役立ちます。 – chepner

答えて

2

ソリューションはgitrevisions <text>からアペンドブレースの部分にある:

$ git rev-parse :/'Commit '{5,10} 
1bf5b98cf90340e714bd0bd13c7721f94749fa5f 
924d9120dec9f61d0f99a5155c51bad63d24b37f 
関連する問題