私は仕事用と個人用の両方のプロジェクトに個人用ラップトップを使用し、仕事中のコミットには仕事用メールアドレス(gitolite)を使用し、残りは個人用メールアドレス(github)を使用します。
すべてグローバルまたは一時的な次のソリューションについて読みました。
git config --global user.email "[email protected]"
git config user.email "[email protected]"
git commit --author "Bob <[email protected]>"
GIT_AUTHOR_EMAIL
、GIT_COMMITTER_EMAIL
、またはEMAIL
環境変数のいずれかを設定する解決策の1つは、環境をworkまたはpersonalに設定するシェル関数を手動で実行することですが、正しいIDに切り替えるのを忘れることがよくあることはよくわかります。間違った身元でコミットする。
特定のリポジトリ、プロジェクト名などをID(名前、電子メール)にバインドする方法はありますか?人々は何をしますか?
git config user.email "[email protected]"
リポジトリ内でこれを行うと、グローバルではなく、そのリポジトリに設定が設定されます。
私があなたを誤解していない限り、それはあなたが望んでいることのように思えます。
以下のlocal setコマンドを使用する必要があります。
ローカルセット
git config user.email [email protected]
git config user.name 'Mahmoud Zalt'
ローカルget
git config --get user.email
git config --get user.name
ローカル設定ファイルはプロジェクトディレクトリ.git/config
にあります。
グローバルセット
git config --global user.email [email protected]
git config --global user.name 'Mahmoud Zalt'
グローバル取得
git config --global --get user.email
git config --global --get user.name
ホームディレクトリ内のグローバル設定ファイル:~/.gitconfig
。
ブランクなどを引用することを忘れないでください。例: 'FirstName LastName'
「.git」フォルダー内の構成ファイルを編集して、リポジトリーに応じて異なるユーザー名と電子メールを維持します
[ユーザー]
名前=ボブ
メール= [email protected]
次のコマンドは、このリポジトリに設定されているユーザー名とメールを示しています。
git config --get user.name
git config --get user.email
例:D:\ workspace\Eclipse\ipchat\.git\configの設定ファイル
ここでipchatは私のレポ名です
git config user.email "[email protected]"
を使用すると、現在のプロジェクトにバインドされます。
それが私のプロジェクトのためにやることです。リポジトリを複製/初期化するときに適切なIDを設定します。それは絶対確実ではありません(あなたがそれを理解する前にあなたが忘れてプッシュするとあなたはホースされます)が、git config --global user.email 'ILLEGAL_VALUE'
と言う能力なしで得ることができるのと同じくらい良いです
実際には、不正な値を作成できます。 git config --global user.name $(Perl -e 'print "x"x968;')
を設定します
その後、非グローバル値の設定を忘れると、エラーメッセージが表示されます。
[編集]別のシステムでは、「致命的:信じられないほど長い個人識別子」で失敗するためにxの数を968に増やす必要がありました。同じバージョンのgit。奇妙な。
--global
パラメーターを使用しない場合、現在のプロジェクトのみに変数が設定されます。
Git 2.13では、gitconfigでincludeIf
を使用して、gitコマンドを実行しているリポジトリのパスに基づいて異なる構成のファイルを含めることができます。
Ubuntu 18.04には新しいGitが付属しているので、~/.gitconfig
でこれを非常に喜んで使用しています。
[include]
path = ~/.gitconfig.alias # I like to keep global aliases separate
path = ~/.gitconfig.defaultusername # can maybe leave values unset/empty to get warned if a below path didn't match
# If using multiple identities can use per path user/email
# The trailing / is VERY important, git won't apply the config to subdirectories without it
[includeIf "gitdir:~/projects/Azure/"]
path = ~/.gitconfig.Azure # user.name and user.email for Azure
[includeIf "gitdir:~/projects/gitlab/"]
path = ~/.gitconfig.gitlab # user.name and user.email for GitLab
[includeIf "gitdir:~/projects/foss/"]
path = ~/.gitconfig.github # user.name and user.email for GitHub
https://motowilliams.com/conditional-includes-for-git-config#disqus_thread
Git 2.13を使用するには、PPA(18.04/Debianより古いUbuntu)を追加するか、バイナリをダウンロードしてインストールする(Windows /その他のLinux)必要があります。