943

私のでは、Github リポジトリに使用したいので~/.gitconfig、個人のメール アドレスを の下にリストします。[user]

しかし、最近、仕事でも git を使い始めました。私の会社の git リポジトリではコミットできますが、新しい変更セットのアナウンスを送信すると、私の電子メール アドレスが認識されないため、Anonymous からのものであると表示されます.gitconfig。少なくとも、それが私の理論です。

で複数の[user]定義を指定することはできます.gitconfigか? .gitconfigまたは、特定のディレクトリのデフォルトを上書きする他の方法はありますか? 私の場合、すべての作業コードをチェックアウトします。そのディレクトリ (およびそのサブディレクトリ) のみ~/worksrc/を指定する方法はありますか?.gitconfig

4

23 に答える 23

1212

You can configure an individual repo to use a specific user / email address which overrides the global configuration. From the root of the repo, run

git config user.name "Your Name Here"
git config user.email your@email.com

whereas the default user / email is configured in your ~/.gitconfig

git config --global user.name "Your Name Here"
git config --global user.email your@email.com
于 2010-11-18T22:56:07.207 に答える
117

または、ローカル.git/configファイルに次の情報を追加することもできます

[user]  
    name = Your Name
    email = your.email@gmail.com
于 2013-04-12T11:03:20.683 に答える
17

複数の名前/電子メールを処理する別のオプションは、フラグをgitエイリアシングgitして使用し-c、グローバルおよびリポジトリ固有の構成をオーバーライドすることです。

たとえば、エイリアスを定義すると、次のようになります。

alias git='/usr/bin/git -c user.name="Your name" -c user.email="name@example.com"'

動作するかどうかを確認するには、次のように入力しgit config user.emailます。

$ git config user.email
name@example.com

エイリアスの代わりに、カスタムgit実行可能ファイルを .xml 内に配置することもできます$PATH

#!/bin/sh
/usr/bin/git -c user.name="Your name" -c user.email="name@example.com" "$@"

リポジトリ固有の方法に対するこれらの方法の利点は、カスタムプログラムがアクティブな場合.git/configにすべてのリポジトリに適用されることです。このようにして、(共有) 構成を変更することなく、ユーザー/名前を簡単に切り替えることができます。gitgit

于 2014-10-02T21:41:10.290 に答える
8

間違いを避けるためにうまくいくと思われる簡単な解決策があります。

[user]からセクションを削除するだけで、各リポジトリの~/.gitconfig設定なしでコミットを行うことができなくなります。user.name

~/.bashrc、ユーザーと電子メールの簡単なエイリアスをいくつか追加します。

alias ggmail='git config user.name "My Name";git config user.email me@gmail.com'
alias gwork='git config user.name "My Name";git config user.email me@work.job'
于 2016-03-09T15:56:22.777 に答える
4

GIT_AUTHOR_EMAIL+ ローカル.bashrc

.bashrc_local: このファイルは追跡せず、仕事用のコンピューターにのみ配置してください:

export GIT_AUTHOR_EMAIL='me@work.com'
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"

.bashrc: このファイルを追跡し、職場と自宅の両方のコンピューターで同じにする:

F="$HOME/.bashrc_local"
if [ -r "$F" ]; then
    . "$F"
fi

https://github.com/technicalpickles/homesickを使用してドットファイルを同期しています。

gitconfig のみが環境変数を受け入れる場合: git config でのシェル変数の展開

于 2016-07-08T19:22:40.933 に答える
4

Windows 環境

Git Extensions --> Settings --> Global Settingsシステムにインストールされている場合は、追加で から変更できます。

gitextensions-最新リリース

これらの設定にアクセスするには、Windows 環境のフォルダー/ディレクトリを右クリックします。 ここに画像の説明を入力

更新:バージョン 2.49 で複数の設定を切り替える/維持する方法 バージョン 2.49 で複数の設定を切り替える/維持する方法

于 2014-07-23T09:34:16.763 に答える
0

ほとんどの質問はOPに答えましたが、私はこれを自分で経験する必要があり、グーグルさえしなくても、最も迅速で簡単な解決策を見つけることができました. 簡単な手順は次のとおりです。

  • .gitconfg他のレポから既存のものをコピーする
  • 新しく追加したリポジトリに貼り付けます
  • .gitconfig名前、電子メール、ユーザー名など、ファイル内の 値を変更します [user] name = John email = john@email.net username = john133
  • リストにファイル名を追加して、ファイルを作業リポジトリに.gitignoreコミットしないようにします.gitconfig
于 2018-08-10T19:55:05.670 に答える
-1

これを ~/.bash_profile に追加するだけで、github.com のデフォルト キーを切り替えることができます

# Git SSH keys swap
alias work_git="ssh-add -D  && ssh-add -K ~/.ssh/id_rsa_work"
alias personal_git="ssh-add -D && ssh-add -K ~/.ssh/id_rsa"
于 2018-11-10T20:43:09.117 に答える
-2

これを行うには複数の方法がありますが、以下のシェル関数を使用してこれを実現しています。

function gitprofile() {
    if [[ $1 == "private" ]]; then
        if grep -q "tom@workmail.com" "/Users/tomtaylor/.gitconfig"; then
            echo "Found in gitconfig. No action required."
        else 
            echo "Found in gitconfig1"
            cp /Users/tomtaylor/.gitconfig /Users/tomtaylor/.gitconfig2
            mv /Users/tomtaylor/.gitconfig1 /Users/tomtaylor/.gitconfig
            mv /Users/tomtaylor/.gitconfig2 /Users/tomtaylor/.gitconfig1
        fi
    elif [[ $1 == "public" ]]; then
        if grep -q "tom@gmail.com" "/Users/tomtaylor/.gitconfig"; then
            echo "Found in gitconfig. No action required."
        else 
            echo "Found in gitconfig1"
            cp /Users/tomtaylor/.gitconfig /Users/tomtaylor/.gitconfig2
            mv /Users/tomtaylor/.gitconfig1 /Users/tomtaylor/.gitconfig
            mv /Users/tomtaylor/.gitconfig2 /Users/tomtaylor/.gitconfig1
        fi
    else 
        echo "Nothing matched. Have some good sleep!"
    fi
}

それを呼び出すと、

gitprofile "public" -> これにより、プロファイルに切り替わりtom@gmail.com

gitprofile "private" -> に切り替わりtom@workmail.comます。

現在の端末設定に基づいて、この関数を ~/.bash_profile または ~/.zshrc に追加します。ターミナルを再起動するか、次のようにスクリプトをコンパイルします

. ~/.bash_profile

機能を有効にします。それが役に立てば幸い !

于 2021-05-15T19:20:36.730 に答える