Eu uso meu laptop pessoal para trabalho e projetos pessoais e gostaria de usar meu endereço de e-mail do trabalho para meus commits no trabalho (gitolite) e meu endereço de e-mail pessoal para o resto (github).
Eu li sobre as seguintes soluções, que são globais ou temporárias:
git config --global user.email "[email protected]"
git config user.email "[email protected]"
git commit --author "Bob <[email protected]>"
- definindo um dos
GIT_AUTHOR_EMAIL
,GIT_COMMITTER_EMAIL
ouEMAIL
variáveis de ambiente
Uma solução é executar manualmente uma função shell que configura meu ambiente para trabalho ou pessoal , mas tenho certeza de que muitas vezes me esquecerei de mudar para a identidade correta, resultando em commitar com a identidade errada.
Existe uma maneira de vincular um determinado repositório, nome de projeto, etc. a uma identidade (nome, e-mail)? O que as pessoas fazem?
git
github
gitolite
git-config
Martin Jambon
fonte
fonte
Respostas:
git config user.email "[email protected]"
Fazer isso dentro de um repo definirá a configuração nesse repo, e não globalmente.
Parece que é isso que você está procurando, a menos que eu esteja interpretando mal.
fonte
Você precisa usar o comando de definição local abaixo:
conjunto local
obter local
O arquivo de configuração local é no diretório do projeto:
.git/config
.conjunto global
obter global
O arquivo de configuração global em no seu diretório home:
~/.gitconfig
.Lembre-se de citar espaços em branco, etc., por exemplo: 'Nome Sobrenome'
fonte
Edite o arquivo de configuração na pasta ".git" para manter o nome de usuário diferente e o e-mail depende do repositório
O comando abaixo mostra qual nome de usuário e e-mail configurados para este repositório.
Exemplo: para o meu, esse arquivo de configuração em D: \ workspace \ eclipse \ ipchat \ .git \ config
Aqui, ipchat é o meu nome de repo
fonte
Se você usar
git config user.email "[email protected]"
, será vinculado ao projeto atual em que você está.É isso que faço pelos meus projetos. Defino a identidade apropriada ao clonar / iniciar o repo. Não é à prova de idiotas (se você esquecer e insistir antes de descobrir, você está perdido), mas é o melhor que você pode obter sem a capacidade de dizer
git config --global user.email 'ILLEGAL_VALUE'
Na verdade, você pode criar um valor ilegal. Defina seu
git config --global user.name $(perl -e 'print "x"x968;')
Então, se você se esquecer de definir seus valores não globais, receberá uma mensagem de erro.
[EDITAR] Em um sistema diferente, tive que aumentar o número de x para 968 para que falhasse com "fatal: identificador pessoal impossivelmente longo". Mesma versão do git. Estranho.
fonte
Se você não usar o
--global
parâmetro, ele definirá as variáveis apenas para o projeto atual.fonte
A partir do Git 2.13, você pode usar um
includeIf
em seu gitconfig para incluir um arquivo com uma configuração diferente com base no caminho do repositório onde está executando seus comandos git.Já que um Git novo o suficiente vem com o Ubuntu 18.04, estou usando isso com
~/.gitconfig
muita alegria.https://motowilliams.com/conditional-includes-for-git-config#disqus_thread
Para usar o Git 2.13, você precisará adicionar um PPA (Ubuntu anterior a 18.04 / Debian) ou baixar os binários e instalar (Windows / outro Linux).
fonte
git config core.sshCommand
várias chaves privadas, oferece um gerenciamento de identidade git perfeito e completo.Esse era exatamente o meu problema. Eu escrevi um script de gancho que avisa se você tem algum github remoto e não definiu um nome de usuário local.
Veja como você configura:
Crie um diretório para manter o gancho global
mkdir -p ~/.git-templates/hooks
Diga ao git para copiar tudo em
~/.git-templates
seu.git
diretório por projeto ao executar git init ou clonegit config --global init.templatedir '~/.git-templates'
E agora copie as seguintes linhas para
~/.git-templates/hooks/pre-commit
e torne o arquivo executável (não se esqueça disso, caso contrário o git não executará!)Se você usar outros hosts para seus repositórios privados, terá que substituí-los de
github.com
acordo com suas necessidades.Agora, toda vez que você fizer um
git init
ou ogit clone
git irá copiar este script para o repositório e executá-lo antes que qualquer commit seja feito. Se você não definiu um nome de usuário local, ele emitirá um aviso e não permitirá que você confirme.fonte
Eu gosto muito da maneira de Micah Henning em seu artigo (consulte Configurando identidades do Git ) sobre esse assunto. O fato de ele aplicar e forçar a identidade a cada repositório criado / clonado é uma boa maneira de não se esquecer de configurar isso a cada vez.
Configuração básica do git
Desconfigure a configuração do usuário atual no git:
Forçar configuração de identidade em cada novo repositório local:
Crie um alias Git para o
identity
comando, que usaremos mais tarde:Criação de identidades
Crie uma identidade com GPG (use
gpg
ougpg2
dependendo do que você tem em seu sistema). Repita as próximas etapas para cada identidade que deseja usar.Copie o bloco de chave pública e adicione-o às configurações do GitHub / GitProviderOfChoice como uma chave GPG.
Adicione identidade à configuração do Git. Repita também para cada identidade que deseja adicionar:
Configurar identidade para um repositório
Se um novo repo não tiver identidade associada, um erro aparecerá no commit, lembrando você de configurá-lo.
Especifique a identidade que você deseja em um novo repositório:
Agora você está pronto para se comprometer com a identidade gitlab .
fonte