Odpowiedzi:
Istnieją 3 poziomy konfiguracji git; projekt, globalny i systemowy.
Utwórz konfigurację specyficzną dla projektu, musisz wykonać to w katalogu projektu:
$ git config user.name "John Doe"
Utwórz konfigurację globalną:
$ git config --global user.name "John Doe"
Utwórz konfigurację systemu:
$ git config --system user.name "John Doe"
I jak można się domyślać, projekt zastępuje globalny i globalny system zastępuje.
git config user.name
czy git config user.email
pokaże nazwę lub napisz Git użyje bieżącego respository.
Począwszy od wersji 2.13 git, git obsługuje konfigurację warunkową . W tym przykładzie sklonowaliśmy repozytorium Firmy A w ~/company_a
katalogu, a repozytorium Firmy B w ~/company_b
.
W swoim .gitconfig
możesz umieścić coś takiego.
[includeIf "gitdir:~/company_a/"]
path = .gitconfig-company_a
[includeIf "gitdir:~/company_b/"]
path = .gitconfig-company_b
Przykładowa zawartość pliku .gitconfig-company_a
[user]
name = John Smith
email = john.smith@companya.net
Przykładowa zawartość pliku .gitconfig-company_b
[user]
name = John Smith
email = js@companyb.com
Dzięki @ crea1
Mały wariant:
Jak napisano na https://git-scm.com/docs/git-config#_includes :
Jeśli wzór zakończy się na
/
,**
zostanie automatycznie dodany. Na przykład wzórfoo/
staje sięfoo/**
. Innymi słowyfoo
, rekurencyjnie pasuje i wszystko w środku.
Więc używam w moim przypadku
~ / .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…
Więc jeśli katalog projektu znajduje się w moim ~/wokspace/
, domyślne ustawienia użytkownika są zastępowane przez
~ / .gitconfig-w :
[user]
name = John Smith
email = js@company.com
git config user.name
zwróci prawidłowy, powinien być w porządku. Czy korzystasz z systemu GNU / Linux lub innego systemu operacyjnego?
Mówiąc wprost, możesz także --local
użyć bieżącego pliku konfiguracyjnego repozytorium :
git config --local user.name "John Doe"
Możesz także wskazać zmienną środowiskową GIT_CONFIG
na plik, który git config
powinien zostać użyty. Z GIT_CONFIG=~/.gitconfig-A git config key value
podanym plikiem zostaje zmanipulowany.
Innym sposobem jest użycie direnv i oddzielenie plików konfiguracyjnych dla każdego katalogu. Na przykład:
.
├── companyA
│ ├── .envrc
│ └── .gitconfig
├── companyB
│ ├── .envrc
│ └── .gitconfig
└── personal
├── .envrc
└── .gitconfig
Każdy .envrc
powinien zawierać coś takiego:
export GIT_CONFIG=$(pwd)/.gitconfig
I .gitconfig
jest zwykle gitconfig z pożądanymi wartościami.
Możesz dostosować konfigurację Git projektu, zmieniając plik konfiguracyjny specyficzny dla repozytorium (tj /path/to/repo/.git/config
.). BTW, git config
domyślnie zapisuje do tego pliku:
cd /path/to/repo
git config user.name 'John Doe' # sets user.name locally for the repo
Wolę utworzyć osobne profile dla różnych projektów (np. W ~/.gitconfig.d/
), a następnie dołączyć je do pliku konfiguracyjnego repozytorium:
cd /path/to/repo
git config include.path '~/.gitconfig.d/myproject.conf'
Działa to dobrze, jeśli trzeba użyć tego samego zestawu opcji w wielu repozytoriach należących do jednego projektu. Możesz także skonfigurować aliasy powłoki lub niestandardowe polecenie Git do manipulowania profilami.
Jestem na tej samej łodzi. Napisałem mały skrypt bash, aby nimi zarządzać. 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
jest również obsługiwane w skrypcie Bash.
Wystąpił błąd podczas próby wprowadzenia git stash
lokalnych zmian. Błąd z git brzmiał „Powiedz mi, kim jesteś”, a następnie powiedział „Uruchom git config --global user.email "you@example.com
i git config --global user.name "Your name"
ustaw domyślną tożsamość konta”. Musisz jednak pominąć opcję --global, aby ustawić tożsamość tylko w bieżącym repozytorium.
[user] email = ...
bloku, zastąpi globalną~/.gitconfig
- a to tylko dla twojego użytkownika?