Usando várias contas com git ou Github

Se você tem várias pessoas usando o mesmo computador ou contas de usuário diferentes para repositórios diferentes, pode ser bastante frustrante tentar descobrir como trocar de conta se você estiver no OSX e descobrir que não está sendo solicitado a fornecer suas informações de login porque elas foram armazenadas em cache.

Isso tudo graças ao utilitário auxiliar para git que armazena em cache suas informações de login (criptografadas) nas chaves do OSX.


Para ver as credenciais atuais armazenadas em cache, use o comando git credential-osxkeychain getseguido de pressionar Enter duas vezes.

se você pressionar Enter apenas uma vez, irá invocar o comando, mas parecerá travar, se você pressionar Enter uma segunda vez, será solicitado por uma caixa de diálogo para confirmar o acesso ao seu chaveiro e então as informações serão retornadas no terminal


E se quiser limpá-lo para que seja solicitado o login novamente, você pode limpá-lo assim:

git credential-osxkeychain erase
host
=github.com
protocol
=https

Mas isso é estúpido. Não quero ter que fazer tudo isso toda vez que precisar trocar de conta. Existe uma solução melhor.


Se quiser evitar esse problema no futuro, você pode configurar a ferramenta git helper para osx-keychain para armazenar suas credenciais de login associadas a todo o caminho do repositório, em vez de apenas ao domínio que é o padrão.


O conserto:


No terminal, digite o comando

git config --global --edit

Isso abrirá um arquivo de configuração. Se ainda não o fez, você pode querer definir seu editor padrão para que o arquivo seja aberto em seu aplicativo preferido. Por exemplo, para definir Sublime Text como seu editor padrão:git config --global core.editor "subl -n -w"

Com o arquivo de configuração aberto, pesquise useHttpPath(ou defina-o se não existir). E defina seu valor como true. Deve ser assim:

[credential]
helper
= osxkeychain
useHttpPath
= true

Isso instruirá o git (bem como o github) que todas as credenciais usadas para fazer login devem ser associadas apenas ao caminho completo do repositório que foi consultado, não para todo o domínio (no caso do github) todos os repositórios no Github.com.

Então agora você pode estar logado em seu repositório, e seu namorado pode estar logado em seu repositório e não haverá conflitos entre seus logins.