22

作業プロジェクトとオープンソースプロジェクトに別々のメールアドレスを使用していますが、プロジェクトの種類ごとに正しいアドレスを使用していることを確認したいと思います。

明らかに、解決策はリポジトリ固有の構成を適切に設定することですが、残念ながら、いくつかのコミットが完了するまで設定するのを忘れ続けているため、グローバルuser.email構成を使用しています。これは、私が行っているものと一致する場合は問題ありません。作業中ですが、それ以外はそれほどうまくいきません。

user.emailがどこにも設定されていない場合、gitはローカルユーザー名とホストを一緒に詰め込んで1つを構成します(デスクトップマシンとしてはそれほど素晴らしいものではありません)。コミットをブロックするだけでいいのですが。フックが機能するとは思わない。これは、新規および複製されたリポジトリで発生するためです。フックをリポジトリに手動でコピーする場合は、代わりに構成を設定する必要があります。

4

2 に答える 2

26

新しいアップデート(2016年2月、git 2.8用)

git 2.8(2016年3月)は新しいソリューションを追加します:

Dan Aloni()によるcommit 4d5c295(2016年2月6日)を参照してください。 支援者:Eric Sunshine(Jeff King()によるcommit 59f9295(2016年2月4日) を参照してください。 支援者:Eric Sunshine(( Junio C Hamanoによってマージされました---コミットc37f9a1、2016年2月17日da-x
sunshineco
peff
sunshineco
gitster

ident:推測されるべきでないuser.useConfigOnly場合にブール値を追加ident

以前は次のようでした。

git config --global user.email "(none)"

user.email人々が各リポジトリに設定することを強制するための実行可能な方法でした。
これは、複数の電子メールアドレスを持ち、クローンごとに異なる電子メールアドレスをターゲットにしている場合に役立ちました。これは、user.emailリポジトリごとの構成で構成が正しい電子メールアドレスに設定されていない限り、gitがコミットを作成できないためです。

ただし、最近の変更である19ce497ident:偽のdefault_emailのフラグを保持、2015年12月10日はgit 2.6.5、2016年1月)は、値が何であれ、明示的に構成されたものは偽でuser.emailないと宣言しました。ハックは機能しなくなりました。

新しい構成変数を追加して、同じ機能を提供しますuser.useConfigOnly。この変数を設定する場合、ユーザーはuser.email構成を明示的に設定する必要があります

したがって、2016年3月とgit 2.8から、次のようにします。

git config --global user.useConfigOnly true

新しいリポジトリはすべて、ローカルファイルでuser.email のみ検索されます。また、ローカルのgit configに 何も見つからない場合、コミットは続行されません。.git/config
user.email


git 2.9(2016年6月)でさらに拡張されることに注意してください。

Marios Titas( ``)によるcommit d3c06c1commit 734c778(2016年3月30日)を参照してください。濱野純雄による合併---コミットe7e6826、 20164月29日)
gitster

identuseConfigOnly名前/メールの自動検出前に確認してください

が設定されている場合user.useConfigOnly、名前や電子メールを自動検出しようとしても意味がありません。
自動検出により、偽の名前が生成され、エラーメッセージが表示される場合もあります。

identuseConfigOnly:エラー時に「教えてください」というメッセージを表示します

user.useConfigOnly説明の少ないエラーメッセージを使用して、ユーザーが構成変数を無効にしてこのエラー状態を回避することを思いとどまらせます。代わりにuser.nameまたはuser.emailを設定することをお勧めします。

したがって、代わりに:

user.useConfigOnly set but no name given
user.useConfigOnly set but no mail given

次のように表示されます。

no name was given and auto-detection is disabled
no email was given and auto-detection is disabled

元の回答(2012年9月)

「 pre-commitフックを使用して特定の作成者によるgitcommitを停止する」のように、次の場合にチェックするデフォルトのpre-commitフックを定義できます。

 git config --local user.email

空かどうか。
空の場合:exit 1

作成するすべてのリポジトリでそのデフォルトフックを使用していることを確認するには、「デフォルトのgitフックの変更」を参照してください。これは、「 gitフックを共有する
」で説明されているものと同様のアプローチです。

于 2012-09-06T04:15:11.640 に答える
2

私が発見したハック/回避策があります。デフォルトのグローバル電子メールを(none)次のように設定するだけです。

git config --global user.email "(none)"

説明はほとんどありません。この回避策は、公式のgitクライアントソースコードでの現在の電子メール検証に依存するため、自己責任で使用してください。

于 2014-07-31T03:48:14.440 に答える