195

誰がブランチを作成したのか知りたいです。

私は次のようにしてそうすることができます:

git branch -a | xargs -L 1 bash -c 'echo "$1 `git log --pretty=format:"%H %an" $1^..$1`"' _

ただし、これはブランチごとの最後のコミッターを返します。必ずしもブランチを作成した人ではありません。

4

12 に答える 12

355

コミッターの日付でソートされた作成者別にリモートGitブランチを一覧表示します。

git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' --sort=committerdate
于 2013-10-02T11:14:35.207 に答える
67

ブランチはコミットポインタに他なりません。そのため、「誰が私を作成したか」などのメタデータは追跡されません。自分で見て。cat .git/refs/heads/<branch>リポジトリで試してください。

リポジトリでこの情報を追跡することに本当に興味がある場合は、ブランチの説明を確認してください。少なくともローカルでは、ブランチに任意のメタデータを添付できます。

また、以下のDarVarの回答は、この情報を入手するための非常に賢い方法です。

于 2012-08-21T13:06:26.710 に答える
55

フラグを使用して以前の回答を微調整し、--sort色/フォーマットを追加しました。

git for-each-ref --format='%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p)    %(align:25,left)%(color:yellow)%(authorname)%(end) %(color:reset)%(refname:strip=3)' --sort=authordate refs/remotes
于 2016-08-31T13:34:00.220 に答える
8

DarVarの答えに追加する:

git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n | awk '{print $7 $8}'

PS:AWKを使用して、作成者とリモートブランチをきれいに印刷しました。

于 2014-07-16T17:48:01.760 に答える
8
git for-each-ref --format='%(authorname) %09 -%(refname)' | sort
于 2016-06-29T14:48:34.333 に答える
7

ローカルリポジトリにブランチを作成したのは誰であるかを確認するには、

git reflog --format=full

出力例:

commit e1dd940
Reflog: HEAD@{0} (a <a@none>)
Reflog message: checkout: moving from master to b2
Author: b <b.none>
Commit: b <b.none>
(...)

しかし、これはおそらく、ブランチを作成するだけのローカルリポジトリでは役に立たないでしょう。

情報は./.git/logs/refs/heads/branchに保存されます。内容の例:

0000000000000000000000000000000000000000 e1dd9409c4ba60c28ad9e7e8a4b4c5ed783ba69b a <a@none> 1438788420 +0200   branch: Created from HEAD

この例の最後のコミットはユーザー「b」からのもので、ブランチ「b2」はユーザー「a」によって作成されました。ユーザー名を変更すると、git reflogがログから情報を取得し、ローカルユーザーを使用しないことを確認できます。

そのローカルログ情報を中央リポジトリに送信する可能性についてはわかりません。

于 2015-08-05T15:47:52.537 に答える
5

著者名に基づいて調べることができます

git for-each-ref --format='%(authorname) %09 %(if)%(HEAD)%(then)*%(else)%(refname:short)%(end) %09 %(creatordate)' refs/remotes/ --sort=authorname DESC
于 2019-10-30T10:19:28.903 に答える
3

仮定:

  1. ブランチはから作られましたmaster
  2. masterまだマージされていません

 git log --format="%ae %an" master..<HERE_COMES_THE_BRANCH_NAME> | tail -1
于 2017-02-16T18:03:11.280 に答える
0

私の知る限り、あなたはあなたがブランチの作成者だけであるかどうかを見るかもしれません。これは、.git / ref / heads/<branch>の最初の行で示されます。「CreatedfromHEAD」で終わる場合は、あなたが作成者です。

于 2013-02-02T20:57:41.830 に答える
0

これが完全に質問の範囲ではないことは知っていますが、特定の作成者によるコミットのみをフィルタリングする必要がある場合は、いつでもgrepにパイプできます:)

# lists all commits in chronological order that
# belong to the github account with
# username `MY_GITHUB_USERNAME` (obviously you
# would want to replace that with your github username,
# or the username you are trying to filter by)


git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -committerdate | grep 'MY_GITHUB_USERNAME'

ハッピーコーディング!:)

于 2018-03-16T22:19:00.683 に答える
0

DESCをお探しの方へ...これはうまくいくようです--sort=-

フォーマットのためのty、これに新しい...私の目はそれの血走りの一部を失っています

git for-each-ref --format='%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p)    %(align:25,left)%(color:yellow)%(authorname)%(end) %(color:reset)%(refname:strip=3)' --sort=-authordate refs/remotes

さらに参照:https ://stackoverflow.com/a/5188364/10643471

于 2019-10-14T16:00:03.540 に答える
0

警告!

これらのコマンドは、ブランチが指しているコミットデータを表示するため、コミット作成者はブランチ作成者とは異なる可能性があることに注意してください。Gitはブランチ作成者を保存せず、コミットの作成者のみを保存します。

于 2021-11-24T11:47:03.420 に答える