创建使用 bash 从中创建分支的所有提交的列表



我正在寻找包含以下内容的列表:

  • 日期
  • 分支名称

对于名称中带有"发布"的"开发"的所有分支。

2014-03-11 10:52:04 +0100 9 months ago  release-1.0
2014-03-28 10:33:23 +0100 8 months ago  release-2.0
2014-04-02 10:40:59 +0200 8 months ago  release-3.0
2014-04-18 17:01:54 +0200 8 months ago  release-3.0.1
2014-05-05 15:25:31 +0200 7 months ago  release-3.0.2

我找到了几个真正帮助我的答案,现在我绊倒了语法。有用的信息是:

  • 寻找尾巴
  • 按日期显示活动的 git 分支(请注意,我正在寻找创建分支的提交)
  • 在另一篇文章中发表此评论

到目前为止,我将以下内容作为 bash 的别名

for k in `git branch|sed s/^..//`;
    do  echo -e `git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr %Creset" 
         <(`diff -u <(git rev-list --first-parent "$k") <(git rev-list --first-parent develop)|sed -ne '"'"'s/^ //p'"'"'|head -1`)
           --`\t"$k";
done|sort;'

单独运行其中的每个部分都可以工作。但不完全是。

所以这些工作:

  • git branch|sed s/^..//
  • git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr %Creset" release-3.0
  • diff -u <(git rev-list --first-parent release-3.0) <(git rev-list --first-parent develop)

但当我把它们放在一起时就不行了。

帮助?

不能像这样嵌套反引号命令:

echo `echo foo `echo bar` baz`

要嵌套,您需要使用(更可取的)$()语法。

你也不需要在 <( ...

除非您希望替换运行 ... 命令的输出,而不是 ... 命令本身。

所以尝试更多类似的东西:

for k in $(git branch|sed s/^..//);
    do  echo -e $(git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr %Creset" 
         <(`diff -u <(git rev-list --first-parent "$k") <(git rev-list --first-parent develop)|sed -ne '"'"'s/^ //p'"'"'|head -1`)
           --)\t"$k";
done|sort;'

或者没有<()反引号

for k in $(git branch|sed s/^..//);
    do echo -e $(git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr %Creset" 
         <(diff -u <(git rev-list --first-parent "$k") <(git rev-list --first-parent develop)|sed -ne '"'"'s/^ //p'"'"'|head -1)
           --)\t"$k";
done|sort;'

此外,我认为您根本不需要在这里使用echo -e,因为您可能可以直接将t$k放在git log格式字符串中。

for k in $(git branch|sed s/^..//); do
    git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr %Creset"$'t'"$k" 
         <(diff -u <(git rev-list --first-parent "$k") <(git rev-list --first-parent develop)|sed -ne '"'"'s/^ //p'"'"'|head -1)
           --;
done|sort;'

假设我做对了,看起来它正在尝试git log修订版中输入以从标准输入进行记录,但我认为git log不会以这种方式进行输入。所以你需要把它作为一个论点。

for k in $(git branch|sed s/^..//); do
    git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr %Creset"$'t'"$k" 
         "$(diff -u <(git rev-list --first-parent "$k") <(git rev-list --first-parent develop)|sed -ne '"'"'s/^ //p'"'"'|head -1)"
         --;
done|sort;'

你可能也可以摆脱那个悬而未决的--

最新更新