<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Adriano Moreira</title>
    <description>The latest articles on DEV Community by Adriano Moreira (@adriano_moreira).</description>
    <link>https://dev.to/adriano_moreira</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F192224%2F265d9a77-a5e7-4093-b138-5077b89bbbdd.jpeg</url>
      <title>DEV Community: Adriano Moreira</title>
      <link>https://dev.to/adriano_moreira</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adriano_moreira"/>
    <language>en</language>
    <item>
      <title>Git com duas contas</title>
      <dc:creator>Adriano Moreira</dc:creator>
      <pubDate>Fri, 20 Aug 2021 21:44:32 +0000</pubDate>
      <link>https://dev.to/adriano_moreira/git-com-duas-contas-4aeg</link>
      <guid>https://dev.to/adriano_moreira/git-com-duas-contas-4aeg</guid>
      <description>&lt;p&gt;O git como ferramenta de gestão de código dispensa apresentações, mas vejo muitos profissionais com dificuldade em trabalhar com ele em duas contas, quem nunca fez um commit naquele projeto pessoal com o email da empresa que atire a primeira pedra.&lt;/p&gt;

&lt;p&gt;Nota: O quê vai ser mostrado aqui funciona no 🪟 Windows também, mesmo usando &lt;code&gt;~&lt;/code&gt; para representar a &lt;code&gt;$HOME&lt;/code&gt; / &lt;code&gt;%USERPROFILE%&lt;/code&gt; , confia.&lt;/p&gt;

&lt;h2&gt;
  
  
  O basico
&lt;/h2&gt;

&lt;p&gt;Primeiro vamos configurar a conta principal&lt;/p&gt;

&lt;p&gt;primeiro vamos gerar nossas chaves&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;ssh&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;keygen&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt; &lt;span class="s"&gt;"email-da-conta-principal@mail.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;adicionar a chave publica no GitHub/AzureDevOps/Bitbuckt/GitLab/...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"email-da-conta-principal@mail.com"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Nome na Conta Principal"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e pronto tudo certo para usar apenas uma conta&lt;/p&gt;

&lt;h2&gt;
  
  
  Usando outro nome ou email
&lt;/h2&gt;

&lt;p&gt;Vamos supor que você possui uma conta pessoal no GitHub e utiliza na empresa qualquer serviço diferente do GitHub como AzureDevOps/Bitbuckt/GitLab  o qual realmente é a situação de muita gente.&lt;/p&gt;

&lt;p&gt;Nesse caso basta adicionarmos a mesma chave publica nos dois provedores. Mas como configurar o nome e email correto para cada um?&lt;/p&gt;

&lt;p&gt;🤔&lt;/p&gt;

&lt;p&gt;Uma solução é fazermos uma configuração local que vale apenas para aquele repositório, que queremos diferente da configuração global.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone git@github.com:minha-conta/meu-projeto
&lt;span class="nb"&gt;cd &lt;/span&gt;meu-projeto
git config &lt;span class="nt"&gt;--local&lt;/span&gt; user.email &lt;span class="s2"&gt;"email-da-conta-pessoal@mail.com"&lt;/span&gt;
git config &lt;span class="nt"&gt;--local&lt;/span&gt; user.nome &lt;span class="s2"&gt;"Nome da conta pessoal"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Obs: a flag &lt;code&gt;--local&lt;/code&gt; pode ser omitida, o comando &lt;code&gt;git config ...&lt;/code&gt;  sem a flag &lt;code&gt;--global&lt;/code&gt; é local.&lt;/p&gt;

&lt;p&gt;Uma solução um pouco mais elaborada é criar uma configuração global baseado no diretório em que os repositórios são armazenados.&lt;/p&gt;

&lt;p&gt;arquivo &lt;code&gt;~/.gitconfig&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;user]
    name &lt;span class="o"&gt;=&lt;/span&gt; Nome na Conta Principal
    email &lt;span class="o"&gt;=&lt;/span&gt; email-da-conta-principal@mail.com

&lt;span class="o"&gt;[&lt;/span&gt;includeIf &lt;span class="s2"&gt;"gitdir:~/repos_pessoais/"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    path &lt;span class="o"&gt;=&lt;/span&gt; ~/repos_pessoais/.gitconfig
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;arquivo &lt;code&gt;~/repos_pessoais/.gitconfig&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;user]
    name &lt;span class="o"&gt;=&lt;/span&gt; Nome na Conta Pessoal
    email &lt;span class="o"&gt;=&lt;/span&gt; email-da-conta-pessoal@mail.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para qualquer uma das duas soluções acima é possível testar se esta tudo certo executando o seguinte comando dentro de um repositório clonado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--get&lt;/span&gt; user.email
git config &lt;span class="nt"&gt;--get&lt;/span&gt; user.name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Usado duas contas no mesmo serviço
&lt;/h2&gt;

&lt;p&gt;Agora vamos imaginar que você possui por exemplo uma conta pessoal no GitHub e uma conta com o email da empresa também no GitHub&lt;/p&gt;

&lt;p&gt;para quem não percebeu a chave funciona com com Identificador único, então não podemos usar a mesma em duas contas do mesmo serviço, precisamos criar uma nova chave ssh.&lt;/p&gt;

&lt;p&gt;vamos criar uma nova chave:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"email-da-conta-pessoal@mail.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Durante a geração da chave precisamos passar um outro caminho para não sobrescrever a anterior.&lt;/p&gt;

&lt;p&gt;Vamos cadastrar a nova chave publica na nossa conta.&lt;/p&gt;

&lt;p&gt;caso não possua ainda um arquivo &lt;code&gt;config&lt;/code&gt; na pasta &lt;code&gt;.ssh&lt;/code&gt; na pasta do usuário vamos criar um mais ou menos assim&lt;/p&gt;

&lt;p&gt;arquivo: &lt;code&gt;~/.ssh/config&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Conta Default/Profissional GitHub&lt;/span&gt;
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

&lt;span class="c"&gt;# Professional&lt;/span&gt;
Host github-pessoal.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_pessoal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No campo &lt;code&gt;Host&lt;/code&gt; é um &lt;strong&gt;alias&lt;/strong&gt; pode por qualquer nome mas no campo &lt;code&gt;HostName&lt;/code&gt; precisa estar no domínio certo.&lt;/p&gt;

&lt;p&gt;Agora para usar a conta principal não muda nada e para usar a conta pessoal precisamos utilizar o alias exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone git@github-pessoal.com:minha-conta/meu-projeto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perceba que no lugar do host correto &lt;code&gt;github.com&lt;/code&gt; utilizamos o alias &lt;code&gt;github-pessoal.com&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;E se você chegou até aqui Parabéns 🎉🎉🎉 , você é tipo o Julius pai do Chris que tem dois empregos.&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>ssh</category>
      <category>sideprojects</category>
    </item>
  </channel>
</rss>
