回答:
git configには3つのレベルがあります。プロジェクト、グローバル、システム。
プロジェクト固有の設定を作成します。これをプロジェクトのディレクトリの下で実行する必要があります。
$ git config user.name "John Doe"
グローバル構成を作成します。
$ git config --global user.name "John Doe"
システム構成を作成します。
$ git config --system user.name "John Doe"
そして、ご想像のとおり、プロジェクトはグローバルおよびグローバルオーバーライドシステムをオーバーライドします。
git config user.name
またはgit config user.email
あなたのGitが現在のレポジトリに使用する名前または電子メールが表示されます。
gitバージョン2.13以降、gitはを含む条件付き構成をサポートしています。この例では、会社Aのリポジトリを~/company_a
ディレクトリに複製し、会社Bのリポジトリをに複製し~/company_b
ます。
あなたの中に.gitconfig
あなたはこのようなものを置くことができます。
[includeIf "gitdir:~/company_a/"]
path = .gitconfig-company_a
[includeIf "gitdir:~/company_b/"]
path = .gitconfig-company_b
.gitconfig-company_aの内容の例
[user]
name = John Smith
email = john.smith@companya.net
.gitconfig-company_bの内容の例
[user]
name = John Smith
email = js@companyb.com
ありがとう@ 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-wに置き換えられます。
[user]
name = John Smith
email = js@company.com
git config user.name
正しいものを返す場合は問題ありません。GNU / Linuxまたはその他のOSを使用していますか?
また、使用する必要GIT_CONFIG
があるファイルを環境変数にポイントすることもできgit config
ます。でGIT_CONFIG=~/.gitconfig-A git config key value
指定されたファイルを操作します。
もう1つの方法は、direnvを使用して、ディレクトリごとに構成ファイルを分離することです。例えば:
.
├── companyA
│ ├── .envrc
│ └── .gitconfig
├── companyB
│ ├── .envrc
│ └── .gitconfig
└── personal
├── .envrc
└── .gitconfig
それぞれ.envrc
に次のようなものが含まれているはずです:
export GIT_CONFIG=$(pwd)/.gitconfig
そして.gitconfig
、望ましい値を持つ通常のgitconfigです。
リポジトリ固有の構成ファイル(つまり、/path/to/repo/.git/config
)を変更することで、プロジェクトのGit構成をカスタマイズできます。ところで、git config
デフォルトではこのファイルに書き込みます:
cd /path/to/repo
git config user.name 'John Doe' # sets user.name locally for the repo
異なるプロジェクト(例:内~/.gitconfig.d/
)に個別のプロファイルを作成し、それらをリポジトリの設定ファイルに含めることを好みます。
cd /path/to/repo
git config include.path '~/.gitconfig.d/myproject.conf'
これは、単一のプロジェクトに属する複数のリポジトリで同じオプションセットを使用する必要がある場合にうまく機能します。シェルエイリアスまたはカスタムGitコマンドを設定して、プロファイルを操作することもできます。
私は同じ船に乗っています。それらを管理するための小さな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
-s
、Bashスクリプトでは処理されません。
git stash
ローカルで変更しようとしたときにエラーが発生しました。gitからのエラーは「あなたが誰であるか教えてください」と言ってから、「実行git config --global user.email "you@example.com
しgit config --global user.name "Your name"
てアカウントのデフォルトIDを設定する」ように私に言った。ただし、現在のリポジトリでのみIDを設定するには、-globalを省略する必要があります。
[user] email = ...
ブロックを変更するなど、リポジトリ自体の構成内の構成ファイルを変更すると、グローバルが上書きされます~/.gitconfig
-これはユーザー専用です?