0

これが私のWindowsバッチファイルです:

FOR /F %%a IN ('git rev-parse --abbrev-ref HEAD') DO SET branchName = %%a
FOR /F %%a IN ('git rev-list --max-count^=1 %branchName%') DO SET localCommitId = %%a
FOR /F %%a IN ('git rev-list --max-count^=1 origin/%branchName%') DO SET remoteCommitId = %%a

@ECHO branchName = %branchName%
@ECHO localCommitId = %localCommitId%
@ECHO remoteCommitId = %remoteCommitId%

実行したときに表示される出力は次のとおりです。

>FOR /F %a IN ('git rev-parse --abbrev-ref HEAD') DO SET branchName = %a

>SET branchName = develop

>FOR /F %a IN ('git rev-list --max-count=1 develop') DO SET localCommitId = %a

>SET localCommitId = e4375fa4753b3956e1454020a812cc7591cf606e

>FOR /F %a IN ('git rev-list --max-count=1 origin/develop') DO SET remoteCommitId = %a

>SET remoteCommitId = e4375fa4753b3956e1454020a812cc7591cf606e

branchName = develop
localCommitId =
remoteCommitId =

印刷されたコマンドが空でない文字列に設定しているにlocalCommitIdremoteCommitIdかかわらず、理由がわかりません。SET

コマンドをたとえばに置き換えると同じ問題が発生するため、コマンドの機能はgit質問とは無関係だと思いますver

4

1 に答える 1

2

説明も少し付け加えておきます。入力set branchすると、が表示されますbranchName = develop。変数が実際に呼び出され%branchName %、値を与えることを意味しますdevelop

以下のコードを修正しました。

FOR /F %%a IN ('git rev-parse --abbrev-ref HEAD') DO SET branchName=%%a
FOR /F %%a IN ('git rev-list --max-count^=1 %branchName%') DO SET localCommitId=%%a
FOR /F %%a IN ('git rev-list --max-count^=1 origin/%branchName%') DO SET remoteCommitId=%%a

@ECHO branchName = %branchName%
@ECHO localCommitId = %localCommitId%
@ECHO remoteCommitId = %remoteCommitId%
于 2013-02-21T17:01:07.170 に答える