133

私は仕事用と個人用の両方のプロジェクトに個人用ラップトップを使用しています。仕事用のコミットには仕事用のメールアドレス(gitolite)を使用し、残りの作業には個人用のメールアドレス(github)を使用したいと思います。

私は、すべてグローバルまたは一時的な次のソリューションについて読みました。

  • git config --global user.email "bob@example.com"
  • git config user.email "bob@example.com"
  • git commit --author "Bob <bob@example.com>"
  • GIT_AUTHOR_EMAILGIT_COMMITTER_EMAILまたはEMAIL環境変数の1つを設定する

1つの解決策は、環境を仕事用または個人用に設定するシェル関数を手動で実行することですが、正しいIDに切り替えるのを忘れて、間違ったIDでコミットすることがよくあると確信しています。

特定のリポジトリ、プロジェクト名などをID(名前、電子メール)にバインドする方法はありますか?人々は何をしますか?

4

8 に答える 8

146

git config user.email "bob@example.com"

リポジトリ内でそれを行うと、グローバルではなく、そのリポジトリに構成が設定されます。

私があなたを誤解していない限り、それはあなたが求めているもののようです。

于 2011-05-24T20:40:40.637 に答える
60

以下のlocal setコマンドを使用する必要があります。

ローカル セット

git config user.email mahmoud@company.ccc
git config user.name 'Mahmoud Zalt'

ローカル取得

git config --get user.email
git config --get user.name

ローカル構成ファイルはプロジェクト ディレクトリにあります: .git/config.

グローバル セット

git config --global user.email mahmoud@zalt.me
git config --global user.name 'Mahmoud Zalt'

グローバル取得

git config --global --get user.email
git config --global --get user.name

ホーム ディレクトリのグローバル設定ファイル: ~/.gitconfig.

空白などを引用することを忘れないでください。例: 'FirstName LastName'

于 2015-10-08T19:40:07.330 に答える
25

「.git」フォルダーで構成ファイルを編集して、リポジトリに応じて異なるユーザー名と電子メールを維持します

  • あなたのリポジトリに行く
  • 隠しファイルを表示し、「.git」フォルダーに移動します
  • 「構成」ファイルを見つけます
  • 以下の行を EOF に追加します

[ユーザー]

名前=ボブ

電子メール = bob@example.com

以下のコマンドは、このリポジトリに設定されているユーザー名と電子メールを表示します。

git config --get user.name

git config --get user.email

例: D:\workspace\eclipse\ipchat\.git\config にある構成ファイルの場合

ここで ipchat は私のレポ名です

于 2011-06-06T09:40:21.917 に答える
17

使用する場合git config user.email "foo@example.com"は、現在のプロジェクトにバインドされます。

それが私のプロジェクトのために私がしていることです。リポジトリのクローンを作成/初期化するときに適切なIDを設定します。それは絶対確実ではありませんが(あなたがそれを理解する前に忘れて押した場合、あなたは馬鹿にされています)、それはあなたが言う能力なしで得ることができるのとほぼ同じくらい良いですgit config --global user.email 'ILLEGAL_VALUE'

実際、あなたは違法な価値を作ることができます。あなたのgit config --global user.name $(perl -e 'print "x"x968;')

次に、グローバル以外の値を設定するのを忘れると、エラーメッセージが表示されます。

[編集]別のシステムでは、「致命的:非常に長い個人識別子」で失敗するように、xの数を968に増やす必要がありました。同じバージョンのgit。変。

于 2011-05-24T20:39:45.333 に答える
9

パラメータを使用しない場合--global、現在のプロジェクトのみに変数が設定されます。

于 2011-05-24T20:40:17.003 に答える
1

このテーマに関する Micah Henning の記事 ( Setting Up Git Identitiesを参照) がとても気に入っています。彼が作成/複製された各リポジトリに ID を適用して強制するという事実は、毎回これを設定することを忘れないための良い方法です。

基本的な git 構成

git で現在のユーザー設定を解除します。

$ git config --global --unset user.name
$ git config --global --unset user.email
$ git config --global --unset user.signingkey

新しいローカル リポジトリごとに ID 構成を強制します。

$ git config --global user.useConfigOnly true

identityコマンドのGit エイリアスを作成します。後で使用します。

$ git config --global alias.identity '! git config user.name "$(git config user.$1.name)"; git config user.email "$(git config user.$1.email)"; git config user.signingkey "$(git config user.$1.signingkey)"; :'

アイデンティティの作成

GPG を使用して ID を作成します (システムで得たものに応じてgpgまたはを使用します)。gpg2使用する ID ごとに次の手順を繰り返します。

注:[keyid]ここには、作成された秘密鍵の識別子があります。例:

sec   rsa4096/8A5C011E4CE081A5 2020-06-09 [SC] [expires: 2021-06-09]
      CCC470AE787C057557F421488C4C951E4CE081A5
uid                 [ultimate] Your Name <youremail@domain>
ssb   rsa4096/1EA965889861C1C0 2020-06-09 [E] [expires: 2021-06-09]

後の8A5C011E4CE081A5部分はキーsec rsa4096/識別子です。

$ gpg --full-gen-key
$ gpg --list-secret-keys --keyid-format LONG <youremail@domain>
$ gpg --armor --export [keyid]

公開鍵ブロックをコピーして、GPG キーとして GitHub/GitProviderOfChoice 設定に追加します。

ID を Git 構成に追加します。また、追加する ID ごとにこれを繰り返します。

注: ここでは自分の ID に名前gitlabを付けるために使用しますが、質問からは何でもかまいません。例:または、など。gitolitegithubwork

$ git config --global user.gitlab.name "Your Name"
$ git config --global user.gitlab.email "youremail@domain"
$ git config --global user.gitlab.signingkey [keyid]

リポジトリの ID を設定する

新しいリポジトリに ID が関連付けられていない場合、コミット時にエラーが表示され、設定するように促されます。

*** Please tell me who you are.

## parts of message skipped ##

fatal: no email was given and auto-detection is disabled

新しいリポジトリで必要な ID を指定します。

$ git identity gitlab

これで、 gitlab IDでコミットする準備が整いました。

于 2020-06-13T17:21:14.430 に答える