22

日付ごとにグループ化されたコミットの変更ログを次の形式で生成する方法:

[date today]
- commit message1
- commit message2
- commit message3
...
[date day+3]
- commit message1
- commit message2
- commit message3
...
(skip this day if no commits)

[date day+1]
- commit message1
- commit message2
- commit message3
... 
[date since]
- commit message1
- commit message2
- commit message3

git logコマンド、またはスマートbashスクリプトはありますか?

4

5 に答える 5

28

これは汚いですが、私が思いついたスクリプトの動作バージョンは次のとおりです。

#!/bin/bash
# Generates changelog day by day
NEXT=$(date +%F)
echo "CHANGELOG"
echo ----------------------
git log --no-merges --format="%cd" --date=short | sort -u -r | while read DATE ; do
    echo
    echo [$DATE]
    GIT_PAGER=cat git log --no-merges --format=" * %s" --since=$DATE --until=$NEXT
    NEXT=$DATE
done
于 2010-06-05T07:45:33.350 に答える
11

私のセットアップが最初の反復でNEXT変数を適切に処理しなかったため、今日のコミットを処理するための受け入れられた答えを得ることができませんでした。Gitのログパラメータも時刻を受け入れるため、次の日付は不要です。

#!/bin/bash
# Generates changelog day by day
echo "CHANGELOG"
echo ----------------------
git log --no-merges --format="%cd" --date=short | sort -u -r | while read DATE ; do
    echo
    echo [$DATE]
    GIT_PAGER=cat git log --no-merges --format=" * %s" --since="$DATE 00:00:00" --until="$DATE 24:00:00"
done
于 2011-01-17T10:40:43.107 に答える
1

それには確かにある種のスクリプトが必要です。
このコマンドラインに少し似ています-fu

for k in `git branch|perl -pe s/^..//`;do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k|head -n 1`\\t$k;done|sort -r

正確にはあなたが求めているものではありませんが、それでもあなたにアイデアを与えることができます)

日付別に整理されたデータもあるGitStatsについて知っています(コミットメッセージはありません)


注:JakubNarębskiがコメントしているgit branchように、このコマンドの一部はスクリプトに適していません。または、配管コマンドであるスクリプトコマンドの自然な候補です。
git for-each-refgit show-ref

于 2010-06-04T18:34:02.980 に答える
1

git log持っている--since--until、それの周りにいくつかのものを包むのは難しいことではないはずです。

于 2010-06-04T18:32:26.387 に答える
0

週ごとのgitログを作成するスクリプトをPythonで作成しました。

タイムデルタを変更することで、日や月などに簡単に変更できます。

https://gist.github.com/NahimNasser/4772132

于 2013-02-12T18:57:20.800 に答える