web-dev-qa-db-ja.com

Gitのコミット数はどうやって取得できますか?

私のGitリポジトリのコミット数を取得したいのですが、SVNのリビジョン番号に少し似ています。

目標は、これを固有の増分ビルド番号として使用することです。

私は現在Unix/Cygwin/msysGit上でそのようにしています:

git log --pretty=format:'' | wc -l

しかし、私はそれがちょっとしたハックだと思います。

もっと良い方法はありますか?私が実際にwcやGitさえも必要としなかったなら、それは素晴らしいでしょう、それでそれは裸のWindowsで動作するかもしれません。ファイルやディレクトリ構造を読むだけです。

677
Splo

リビジョンのコミットカウントを取得するには(HEADmaster、コミットハッシュ):

git rev-list --count <revision>

すべてのブランチにわたるコミット数を取得するには

git rev-list --all --count

ビルド識別子にはこれを使用しないことをお勧めしますが、必要に応じて、ビルドしているブランチのカウントを使用することをお勧めします。そのように同じリビジョンは常に同じ番号を持ちます。すべてのブランチにこの数を使用すると、他のブランチでのアクティビティによって数が変わる可能性があります。

1008
Benjamin Atkin

git shortlogは一方通行です。

140
Rayne

git rev-list HEAD --count

git rev-list

git rev-list <commit>:与えられたコミットからの親リンクをたどることによって到達可能なコミットを一覧表示します(この場合、 _ head _ )。

--count:リストされたコミットの数を記載した数字を表示し、他のすべての出力を抑制します。

99
Jake Berger

このコマンドは、コミット者によってグループ化されたコミットの数を返します。

git shortlog -s

git shortlog -s
14 John lennon
9  Janis Joplin
73
Alex Pliutau

コミットのための一意で、まだ非常に読みやすい識別子を探しているなら、 git describe はあなたのためのものかもしれません。

52
Bombe

Gitの「リビジョン番号」 について最初に考えるのはあなたではありませんが、「wc」は非常に危険です。コミットを消去または破棄でき、履歴が再訪されるからです。

「リビジョン番号」は、Subversionにとって特に重要でした。これは、 マージの場合に必要でした (SVN1.5および1.6が改善されているため)です。

最終的に、コメントにリビジョン番号を含む事前コミットフックがあり、アルゴリズムが関与しないall正しい数を決定するためのブランチの履歴。

Bazaar 実際に思いついたのは そのようなアルゴリズム であり、これは良い出発点かもしれませんあなたがしたいこと。

Bombeの答え が指摘しているように、Gitには実際には最新のタグ、コミットの数、SHA-1キーのビットに基づいて独自のアルゴリズムがあります)。それがあなたのために働くならば、あなたは彼の答えを見なければなりません(そして賛成するべきです)。


Aaronのアイデア を説明するために、 Gitコミットハッシュをアプリケーションの「情報」ファイルに追加 アプリケーションと共に配布しています。

そうすれば、aboutボックスは次のようになります。

About box

Applicative番号はコミットの一部ですが、「application's "info" file」はパッケージングプロセス中に生成され、applicativeビルド番号を技術リビジョンid

33
VonC

Uを使用することができます:

git shortlog -s -n

結果:

 827  user one
    15  user two
     2  Gest 
26
demenvil

それを変数にするには、最も簡単な方法は次のとおりです。

export GIT_REV_COUNT=`git rev-list --all --count`
21
John Gietzen

簡単な方法は:

 git log --oneline | wc -l

onelineはそれを保証します。

20
Jimmy Kane

Gitのショートログは、コミットの詳細を取得する1つの方法です。

git shortlog -s -n

これはコミットの数とそれに続く著者名を与えます。 -sオプションを指定すると、作成者が作成した各コミットのすべてのコミットメッセージが削除されます。コミットメッセージも見たい場合は、同じオプションを削除してください。リスト全体をソートするには、-nオプションを使用します。お役に立てれば。

git rev-parse - 短いHEAD

8
makuchaku

Gitの人々がGit describeに基づいて有用なバージョン番号を生成するのを助けるために使用するNiceヘルパースクリプトがあります。スクリプトを表示し、に対する私の答えでそれを説明します。Gitプロジェクトのファイルに現在のコミットIDをどのように含めますか?

7
Pat Notz

Masterのようにブランチを1つだけ使用している場合は、これでうまくいくと思います。

git rev-list --full-history --all | wc -l

これは数字だけを出力します。あなたはそれをのようなものにエイリアスすることができます

git revno

物事を本当に便利にするために。そうするために、あなたの.git/configファイルを編集し、これを以下に追加してください。

[alias]
    revno = "!git rev-list --full-history --all | wc -l"

これはWindowsでは機能しません。私はそのOSの "wc"に相当するものを知りませんが、あなたのためにカウントをするためにPythonスクリプトを書くことはマルチプラットフォームの解決策でしょう。

4
NuclearPeon

当社では、SVNからGitに移行しました。改訂番号の欠如は大きな問題でした!

git svn cloneを実行してから、最後のSVNコミットをそのSVNリビジョン番号でタグ付けします。

export hr=`git svn find-rev HEAD`
git tag "$hr" -f HEAD

それからあなたはの助けを借りてリビジョン番号を取得することができます

git describe --tags --long

このコマンドは次のようになります。

7603-3-g7f4610d

意味:最後のタグは7603です - それはSVNのリビジョンです。 3 - それからのコミットの数です。追加する必要があります。

そのため、このスクリプトでリビジョン番号を数えることができます。

expr $(git describe --tags --long | cut -d '-' -f 1) + $(git describe --tags --long | cut -d '-' -f 2)
3
Matvey

ビルド中に番号を生成してファイルに書き込みます。リリースするときはいつでも、そのファイルを "Build 147"というコメントでコミットしてください(あるいは現在のビルド番号はなんでも)。通常の開発中はファイルをコミットしないでください。こうすることで、Gitのビルド番号とバージョンを簡単にマッピングすることができます。

3
Aaron Digulla

私が使用していたものは次のとおりです。

git log | grep "^commit" | wc -l

シンプルだがうまくいった。

1

Bash構文を使う

$(git rev-list --count HEAD)

純粋に線形の履歴ではうまく見えます。 masterを基にしてブランチから「数」を得たい場合は、次の点を考慮してください。

$(git rev-list --count $(git merge-base master HEAD)).$(git rev-list --count ^master HEAD)

masterのチェックアウトから実行すると、単に1234.0などになります。ブランチのチェックアウトから実行すると、そのブランチで13のコミットが行われた場合は1234.13のようなものになります。明らかに、これはあなたが与えられたmasterリビジョンからせいぜい1つのブランチを基にしている限りにおいてのみ有用です。

--first-parentをマイクロ番号に追加して、他のブランチをマージすることによってのみ発生するコミットを抑制することは可能ですが、おそらく不要です。

1
Jesse Glick

あなたが試すことができます

git log --oneline | wc -l

あるいはリポジトリに貢献している人々が行ったすべてのコミットを一覧表示する

git shortlog -s
1
user7161360

git config --global alias.count 'rev-list --all --count'

これをあなたの設定に追加すれば、あなたはただコマンドを参照することができます。

git count

1
Robert Pounder

このようにgit shortlogを使う

git shortlog -sn

またはエイリアスを作成する(ZSHベースの端末用)

# show contributors by commits alias gcall="git shortlog -sn"

0
Ahmad Awais