削除 - github branch 作成者




gitブランチ作成者を探す (6)

ローカルリポジトリにブランチを作成した人は、

git reflog --format=full

出力例:

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

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

情報は./git/logs/refs/heads/ branchに保存されます。 コンテンツの例:

0000000000000000000000000000000000000000 e1dd9409c4ba60c28ad9e7e8a4b4c5ed783ba69b a <[email protected]> 1438788420 +0200   branch: Created from HEAD

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

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

私は誰が支店を作ったのかを知りたい。

私はそうすることができます:

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

ただし、ブランチを作成した人ではなく、ブランチごとに最後のコミッターを返します。


https://.com/a/19135644/2917986追加する

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

PS私たちはawkを使用して、著者とリモートブランチをきれいに印刷しました


リモートGitブランチを著者別に並べ替え並べ替え:committerdate:

git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n

仮定:

  1. 支店はmasterから作られた
  2. まだmaster統合されていません
 git log --format="%ae %an" master..<HERE_COMES_BRANCH_NAME> | tail -1

私はこれが完全に問題の範囲ではないことを知っていますが、特定の著者によるコミットのみをフィルタリングする必要がある場合は、常に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'

幸せなコーディング! :)


私は上記の答えを--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






git-branch