Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 使用bash创建所有提交的列表,从中创建分支_Git_Bash_Sed_Diff - Fatal编程技术网

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

Git 使用bash创建所有提交的列表,从中创建分支,git,bash,sed,diff,Git,Bash,Sed,Diff,我正在寻找包含以下内容的列表: 日期 分支机构名称 对于名称中带有“发布”的“开发”分支机构 近似 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 re

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

  • 日期
  • 分支机构名称
对于名称中带有“发布”的“开发”分支机构

近似

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
我已经找到了几个真正对我有帮助的答案,现在我在语法上结结巴巴。有用的信息包括:

  • (请注意,我正在查找进行分支的提交)
  • 在另一个岗位上
到目前为止,我在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/^../`中k的
;
do echo-e`git log-1--pretty=格式:“%Cgreen%ci%Cblue%cr%Creset”

不能像这样嵌套backtick命令:

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;'
要嵌套,您需要使用(更可取的是)语法
$()

您也不需要在
不能像这样嵌套backtick命令<代码>`echo foo`echo bar`baz`
。要嵌套,您需要使用
$()
语法。但是,您为什么要在这里使用
echo-e
?你能不能把
\t$k
放在git日志格式字符串中?不要用别名来表示这么复杂的东西;使用shell函数。@EtanReisner我想是这样的!我没有使用\t$k,因为我只是不知道如何有效地执行此操作。我对刚才的effective很满意。@chepner既然我知道如何使用别名,我可能会把它变成一个函数。谢谢。@TomFenech老实说,我不知道那是什么。OP中的代码片段不完整(它至少去掉了别名前缀),引用问题让我感到困惑。我可以试一下。我提到它的原因是我正在考虑做一个结合使用
$()
和我自己的函数的答案,但也有点困惑!
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
    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;'
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;'