首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git分支-rvv结果的分解与解释

git分支-rvv结果的分解与解释
EN

Stack Overflow用户
提问于 2018-04-03 20:33:48
回答 1查看 98关注 0票数 1

下面的git branch命令返回的列应该使用哪些特定的命令来分解?

代码语言:javascript
复制
git branch -rvv  | grep "Merge pull request" | grep "$fromCurrentRepoTo"

另外,除了简单地给出只返回单个列的值的命令之外,结果中的每一列是什么?

此链接上的正式文件声明,当给出-vv标志时,结果将:

显示每个头的sha1和提交主题行,以及与上游分支(如果有的话)的关系,以及上游分支的名称。

这意味着结果中将包括以下4列:

代码语言:javascript
复制
sha1 
commit subject line
relationship to upstream branch (if any)
name of the upstream branch

但是下面的结果似乎包括6列,而不是上面列出的4列。

为了帮助分解这个由2部分组成的OP的答案,我包含了完整的命令列表和完整的终端输出。

完整脚本

为供参考,导致上述命令的完整命令顺序如下:

代码语言:javascript
复制
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

终端输出

当运行上述命令时,会将以下内容输出到控制台:

代码语言:javascript
复制
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. 这些列中的每一列都是什么?(猜测列在下面的括号中)
  2. 为了将每个列的值提取到一个单独的变量中,我需要哪些特定的语法?
代码语言:javascript
复制
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命令。

EN

回答 1

Stack Overflow用户

发布于 2018-04-04 07:44:41

git branch -vvgit 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"返回三列,如下所示:

代码语言:javascript
复制
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字符串拆分为空格(由于提交消息中通常有空格,因此无法用于提交消息):

代码语言:javascript
复制
st=$(git branch -rvv |grep "Merge pull request" | grep "$fromCurrentRepoTo")
IFS=' '
for t in $st; do
  echo $t
done

要从commit获取提交消息(第3列),可以使用以下命令:

代码语言:javascript
复制
git show -s --format=%s <sha-1 value>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49638725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档