下面的git branch命令返回的列应该使用哪些特定的命令来分解?
git branch -rvv | grep "Merge pull request" | grep "$fromCurrentRepoTo"另外,除了简单地给出只返回单个列的值的命令之外,结果中的每一列是什么?
此链接上的正式文件声明,当给出-vv标志时,结果将:
显示每个头的sha1和提交主题行,以及与上游分支(如果有的话)的关系,以及上游分支的名称。
这意味着结果中将包括以下4列:
sha1
commit subject line
relationship to upstream branch (if any)
name of the upstream branch但是下面的结果似乎包括6列,而不是上面列出的4列。
为了帮助分解这个由2部分组成的OP的答案,我包含了完整的命令列表和完整的终端输出。
完整脚本
为供参考,导致上述命令的完整命令顺序如下:
echo "About to currentRepo=$(git rev-parse --abbrev-ref HEAD)"
currentRepo=$(git rev-parse --abbrev-ref HEAD)
echo "about to echo currentRepo"
echo $currentRepo
fromVar="from "
toVar=" to"
fromCurrentRepoTo="$fromVar$currentRepo$toVar"
echo "about to echo fromCurrentRepoTo"
echo $fromCurrentRepoTo
echo "About to git branch -rvv | grep 'Merge pull request' | grep fromCurrentRepoTo"
git branch -rvv | grep "Merge pull request" | grep "$fromCurrentRepoTo"
echo "----------------------------------"
echo "About to git branch -rvv"
git branch -rvv终端输出
当运行上述命令时,会将以下内容输出到控制台:
build 03-Apr-2018 11:08:52 About to currentRepo=Issue_Example
build 03-Apr-2018 11:08:52 about to echo currentRepo
build 03-Apr-2018 11:08:52 Issue_Example
build 03-Apr-2018 11:08:52 about to echo fromCurrentRepoTo
build 03-Apr-2018 11:08:52 from Issue_Example to
build 03-Apr-2018 11:08:52 About to git branch -rvv | grep 'Merge pull request' | grep fromCurrentRepoTo
build 03-Apr-2018 11:08:52 origin/feature/Feature_Version_Example 37d71e5 Merge pull request #2 in PCFPT/scriptsforexamples from Issue_Example to feature/Feature_Version_Example
build 03-Apr-2018 12:56:04 ----------------------------------
build 03-Apr-2018 12:56:04 About to git branch -rvv
build 03-Apr-2018 12:56:04 origin/HEAD -> origin/master
build 03-Apr-2018 12:56:04 origin/Issue_Example 6f8346a who is the dirty rat now?
build 03-Apr-2018 12:56:04 origin/feature/Feature_Version_Example 37d71e5 Merge pull request #2 in PCFPT/scriptsforexamples from Issue_Example to feature/Feature_Version_Example
build 03-Apr-2018 12:56:04 origin/master cf60eb7 Initial Commit
build 03-Apr-2018 12:56:04 ----------------------------------重申这个问题
问题的两部分可重述如下,包括在上述终端输出中返回的实际数据:
1. origin/feature/Feature\_Version\_Example
2. 37d71e5 (sha1 of most recent commit)
3. Merge pull request #2 (subject line of commit?)
4. PCFPT/scriptsforexamples (remote project and repository)
5. Issue\_Example
6. feature/Feature\_Version\_Example
我包含了bash标记,因为这是在一个CentOS服务器上,上面显示了一些bash命令。
发布于 2018-04-04 07:44:41
git branch -vv和git branch -rvv (等于git branch -vv -r)的输出是不同的。
git branch -vv,它将返回四列,与您提到的类似(基于本地分支的列表):
第1栏:本地分支名称第2列: sha-1值列3:相关跟踪分支名称(如果有)。否则,该列为空列4: commit (对于作为列2列表的sha-1值)消息。git branch -rvv,它将返回三列(基于跟踪分支的列表):
第1栏:跟踪分支名称第2列: sha-1值第3列:提交(对于作为列2列表的sha-1值)消息因此,您使用的命令git branch -rvv | grep "Merge pull request" | grep "$fromCurrentRepoTo"返回三列,如下所示:
Column 1: origin/feature/Feature_Version_Example
Column 2: 37d71e5
Column 3: Merge pull request #2 in PCFPT/scriptsforexamples from Issue_Example to feature/Feature_Version_Example要获得跟踪分支名称(第1列)或sha-1值(第2列),可以将outpy字符串拆分为空格(由于提交消息中通常有空格,因此无法用于提交消息):
st=$(git branch -rvv |grep "Merge pull request" | grep "$fromCurrentRepoTo")
IFS=' '
for t in $st; do
echo $t
done要从commit获取提交消息(第3列),可以使用以下命令:
git show -s --format=%s <sha-1 value>https://stackoverflow.com/questions/49638725
复制相似问题