485

.gitconfig通常、ディレクトリに格納されuser.homeます。

私は会社 A のプロジェクトに取り組むために別の ID を使用し、会社 B の別の ID (主に名前/電子メール) を使用します。チェックインが名前/電子メールと一致しないように、2 つの異なる Git 構成を使用するにはどうすればよいですか?

4

13 に答える 13

432

git config には 3 つのレベルがあります。プロジェクト、グローバル、システム。

  • project : プロジェクト構成は、現在のプロジェクトでのみ使用でき、プロジェクトのディレクトリの .git/config に保存されます。
  • global : グローバル構成は、現在のユーザーのすべてのプロジェクトで使用でき、~/.gitconfig に保存されます。
  • system : システム構成はすべてのユーザー/プロジェクトで利用でき、/etc/gitconfig に保存されます。

プロジェクト固有の構成を作成します。これをプロジェクトのディレクトリの下で実行する必要があります。

$ git config user.name "John Doe" 

グローバル構成を作成します。

$ git config --global user.name "John Doe"

システム構成を作成します。

$ git config --system user.name "John Doe" 

ご想像のとおり、プロジェクトはグローバルおよびグローバル オーバーライド システムをオーバーライドします。

注: プロジェクト構成は、この特定のレポの 1 つの特定のコピー/クローンに対してローカルであり、レポがリモートからクリーンに再クローンされた場合は再適用する必要があります。コミット/プッシュでリモートに送信されないローカル ファイルを変更します。

于 2013-05-22T02:17:48.513 に答える
361

リポジトリの特定のクローン内の.git/configファイルは、そのクローンに対してローカルです。そこに配置された設定は、その特定のプロジェクトのアクションにのみ影響します。

(デフォルトでは、 はgit config変更しますが、 with のみが後者を変更します。).git/config~/.gitconfig--global

于 2012-01-10T10:27:24.143 に答える
77

ありがとう@crea1

小さな変種:

https://git-scm.com/docs/git-config#_includesに書かれているように:

パターンが で終わる場合、/**自動的に追加されます。たとえば、パターンfoo/は になりfoo/**ます。つまりfoo、再帰的に一致し、内部のすべてが一致します。

したがって、私の場合は
~/.gitconfigを使用します。

[user] # as default, personal needs
    email = myalias@personal-domain.fr
    name = bcag2
[includeIf "gitdir:~/workspace/"] # job needs, like workspace/* so all included projects
    path = .gitconfig-job

# all others section: core, alias, log…

したがって、プロジェクト ディレクトリが my~/wokspace/にある場合、デフォルトのユーザー設定は
~/.gitconfig-jobに置き換えられます。

[user]
name = John Smith
email = js@company.com
于 2019-01-10T09:50:46.620 に答える
16

私は次の方法で電子メールに対してこれを行っています。

git config --global alias.hobbyprofile 'config user.email "me@example.com"'

次に、新しい作業プロジェクトを複製するgit hobbyprofileと、実行するだけで、その電子メールを使用するように構成されます。

于 2016-10-16T06:55:04.900 に答える
13

GIT_CONFIG使用する必要のあるファイルを環境変数にポイントすることもできgit configます。指定されたファイルでGIT_CONFIG=~/.gitconfig-A git config key value操作されます。

于 2012-01-10T10:50:59.847 に答える
0

私は同じ船に乗っています。それらを管理するための小さなbashスクリプトを作成しました。 https://github.com/thejeffreystone/setgit

#!/bin/bash

# setgit
#
# Script to manage multiple global gitconfigs
# 
# To save your current .gitconfig to .gitconfig-this just run:
# setgit -s this
#
# To load .gitconfig-this to .gitconfig it run:
# setgit -f this
# 
# 
# 
# Author: Jeffrey Stone <thejeffreystone@gmail.com>

usage(){
  echo "$(basename $0) [-h] [-f name]" 
  echo ""
  echo "where:"
  echo " -h  Show Help Text"
  echo " -f  Load the .gitconfig file based on option passed"
  echo ""
  exit 1  
}

if [ $# -lt 1 ]
then
  usage
  exit
fi

while getopts ':hf:' option; do
  case "$option" in
      h) usage
         exit
         ;;
      f) echo "Loading .gitconfig from .gitconfig-$OPTARG"
         cat ~/.gitconfig-$OPTARG > ~/.gitconfig
         ;;
      *) printf "illegal option: '%s'\n" "$OPTARG" >&2
         echo "$usage" >&2
         exit 1
         ;;
    esac
done
于 2012-05-16T00:08:06.837 に答える
0

git stashローカルの変更をしようとしたときにエラーが発生しました。git からのエラーは、「あなたが誰であるかを教えてください」と言い、「実行git config --global user.email "you@example.comgit config --global user.name "Your name"て、アカウントのデフォルト ID を設定する」ように言いました。ただし、現在のリポジトリでのみ ID を設定するには、--globalを省略する必要があります。

于 2019-03-26T20:03:18.670 に答える