如何显示 git 分支名称,然后附加引号或禁止换行?
How do I display a git branch name, then either append a quotemark, or suppress newline?
如何让 git branch --show-current
停止附加换行符或在换行符前插入引号?
我想通过类似
的方式创建 C 风格的头文件
echo -n "#define GIT_LAST_HASH \"" >> TimestampNow.h
git log --no-show-signature -n 1 --format=%h%x22 >> TimestampNow.h # works well
echo -n "#define GIT_BRANCH \"" >> TimestampNow.h
git branch --show-current --format=%x22 >> TimestampNow.h # does not work
创建
#define GIT_LAST_HASH "1e3134d" // works fine
#define GIT_LAST_BRANCH "develop" // can neither insert quotemark, nor stop newline, at end of 'develop'
你无法从 git branch --show-current
那里得到你想要的,但幸运的是,你 不需要 那样做。您已经在使用 shell,因此请更有效地使用它:
hash=$(git rev-parse --short HEAD)
branch=$(git branch --show-current) # empty for detached HEAD
printf '#define GIT_LAST_HASH "%s"\n#define GIT_BRANCH "%s"\n' $hash "$branch" >> TimestampNow.h
(顺便说一句,大多数人发现最好使用 git describe
,而不是像这样拼凑在一起,以制作可用于描述构建的可打印字符串。考虑使用 git describe --always --dirty
例如。)
如何让 git branch --show-current
停止附加换行符或在换行符前插入引号?
我想通过类似
echo -n "#define GIT_LAST_HASH \"" >> TimestampNow.h
git log --no-show-signature -n 1 --format=%h%x22 >> TimestampNow.h # works well
echo -n "#define GIT_BRANCH \"" >> TimestampNow.h
git branch --show-current --format=%x22 >> TimestampNow.h # does not work
创建
#define GIT_LAST_HASH "1e3134d" // works fine
#define GIT_LAST_BRANCH "develop" // can neither insert quotemark, nor stop newline, at end of 'develop'
你无法从 git branch --show-current
那里得到你想要的,但幸运的是,你 不需要 那样做。您已经在使用 shell,因此请更有效地使用它:
hash=$(git rev-parse --short HEAD)
branch=$(git branch --show-current) # empty for detached HEAD
printf '#define GIT_LAST_HASH "%s"\n#define GIT_BRANCH "%s"\n' $hash "$branch" >> TimestampNow.h
(顺便说一句,大多数人发现最好使用 git describe
,而不是像这样拼凑在一起,以制作可用于描述构建的可打印字符串。考虑使用 git describe --always --dirty
例如。)