Introdução ao Git

Publicados: 2022-06-30

Quando comecei a construir sites, eu “codificava cowboy”, o que significa que muitas vezes editava arquivos ao vivo no servidor. Levei apenas alguns sites quebrados para perceber que essa era uma ideia terrível. Então comecei a construir sites localmente no meu computador. Mais de uma vez editei um arquivo local apenas para migrar o arquivo para o local errado no meu cliente FTP. Ocasionalmente, isso significaria que eu substituiria um arquivo que não poderia consertar sem procurar por alguma cópia de backup que eu esperava ter mantido.

Se você ainda está lidando com FTP e não consegue reverter seus arquivos, é hora de aprender a usar o Git para controle de versão.

O que é Controle de Versão?

Um sistema de controle de versão (VCS) é um tipo de software que ajuda os desenvolvedores de software a gerenciar alterações em seu código ao longo do tempo. Um bom sistema VCS acompanhará cada alteração no código que for feita. Isso significa que, se você quebrar algo, poderá reverter para uma versão anterior do código que estava funcionando, sem tentar clicar em “Desfazer” até que as coisas funcionem.

Em um ambiente de equipe, um VCS o ajudará a trabalhar com diferentes membros, fornecendo ferramentas que permitirão mesclar alterações no código quando diferentes membros atualizarem arquivos.

Uma das coisas que faço no Git é criar uma nova ramificação para cada recurso que construo. Isso significa que posso acompanhar as alterações que faço em uma ramificação, mas ainda voltar ao estado atual do site voltando para a ramificação principal. Falaremos mais sobre esse fluxo de trabalho mais tarde.

O que é Git?

Git é um sistema de controle de versão, mas não é o único. O repositório principal do WordPress é executado via SVN, embora você também possa encontrar uma cópia do Git. Há também Mercurial, Visual Source Safe, VESTA e muitas outras opções.

Apesar de todas essas opções, o Git é o que quase todo mundo usa, então é o controle de versão que vamos aprender hoje.

Termos e comandos básicos do Git

Antes de nos aprofundarmos na mecânica de como usar o Git, precisamos entender alguns termos. Vamos cobrir apenas os termos que você encontrará regularmente.

Para uma lista mais completa de tudo o que você pode encontrar, veja este Referência do Git ou isso lista completa de comandos Git .

Add : Quando você fizer alterações em seu código, você usará o comando git add para adicionar as alterações para que elas possam ser confirmadas.

Branch : Um branch é uma versão do seu repositório que tem uma diferença do projeto de trabalho principal. Todos os repositórios vêm com um branch principal ou, mais comumente em projetos mais antigos, um branch master. Recentemente, o Git e o Github começaram a alterar o nome da ramificação padrão de master para main devido a problemas históricos com a palavra master. O Git 2.28 também permite que você defina seu nome de branch padrão para qualquer novo projeto.

Checkout : Você usa o comando git checkout para alternar entre diferentes branches em um repositório. Quando você usa esse comando, o Git altera o conteúdo dos arquivos ou adiciona e remove arquivos que diferem entre as ramificações.

Clone : O comando git clone é usado para fazer uma cópia de um repositório do repositório de origem. Você usaria esse comando para obter uma cópia local de um repositório remoto para poder trabalhar no código.

Commit : Depois de usar o git add , você precisa usar o git commit para poder salvar o estado dos seus arquivos no git.

init : git init cria um repositório vazio para você com todos os arquivos básicos que o Git precisa para operar.

Merge : Depois de fazer alterações em uma ramificação e adicioná-las e confirmá-las, use o comando git merge para migrar essas alterações para outras ramificações.

Origem : Este é o nome padrão para a versão primária do repositório. Eu costumo mudar o meu para ser mais descritivo do que a origem. Se estou trabalhando com o Github, altero as configurações no Git para que a origem se torne github. Isso me ajuda a manter as coisas claras na minha cabeça.

Push : Atualiza o branch remoto com os commits que foram feitos em sua versão local do repositório.

Repositório : Isso também pode ser chamado de “Repo” e é um diretório de todos os arquivos e um histórico do Git de alterações nesses arquivos.

Status : git status mostra o status atual do seu repositório de trabalho.

.gitignore : Este é um arquivo oculto que contém padrões de arquivos que o Git não se incomodará em rastrear. Se você tiver .DS_Store em seus arquivos .gitignore , ele ignorará todos os arquivos irritantes que o macOS geralmente coloca dentro de pastas.

Hospedando repositórios Git

Uma outra coisa a entender antes de mergulhar é que, embora você não precise de um local remoto para seu repositório, não ter um reduzirá alguns dos benefícios de usar o Git. Sem um repositório remoto hospedado em outro lugar, você não terá um backup do seu código se seu computador morrer ou for roubado.

O Github e o Bitbucket são dois dos lugares mais populares para hospedar seus repositórios Git porque eles são principalmente gratuitos e você pode ter repositórios privados. Isso significa que seu código está no servidor de outra pessoa, portanto, se você não gostar dessa ideia, poderá usar o Gitlab em seu servidor para hospedar repositórios.

Instalando o Git

No macOS, a maneira mais simples de instalar o git é abrir o Terminal e digitar git, que solicitará que você baixe as ferramentas da linha de comando do Xcode para instalar o git. Quando terminar, você pode executar git –version para ver qual versão do git você possui. Se isso não funcionar, existem algumas outras maneiras de instalar o git no macOS.

Para usuários do Windows, você pode instalar o Git com o instalador oficial do Git. O Git também vem junto com o aplicativo Github Desktop, sobre o qual falaremos mais tarde.

Se você estiver no Linux, o git deve ser empacotado com seu gerenciador de pacotes, ou você pode ver essas maneiras de instalar o git no Linux.

Configurando os padrões do Git

Depois de instalar o Git, você precisa configurá-lo para que cada commit use seu nome e e-mail e mensagens de commit para usar seu editor preferido para inserir comentários que acompanham o commit. Veremos como configurá-los no macOS por meio do aplicativo Terminal.

git config --global user.name "Your Name" irá definir o nome que vai com cada commit feito em seu computador.

git config --global user.email "[email protected]" definirá o endereço de e-mail associado a cada commit que você fizer.

git config --global core.editor vim fará o editor padrão para Git vim. Embora eu ame o vim, não é o editor que todo mundo adora. Se você usa Atom, então você usaria git config –global core.editor “atom –wait” ou git config –global core.editor “subl -n -w” para Sublime Text.

Se você gosta de IDEs, o Visual Studio Code também permite trabalhar com o Git diretamente de dentro do aplicativo, se desejar, assim como o PHPStorm .

Estabelecimento de um repositório

Agora que temos o git instalado e configurado, vamos iniciar um repositório básico. Abra seu Terminal e crie uma pasta chamada test-repository digitando mkdir test-repository . Em seguida, digite cd test-repository para mudar para o diretório test-repository e digite git init .

Neste ponto, você terá um diretório oculto em sua pasta chamado .git . Como é um arquivo oculto, você precisará digitar ls -a no Terminal para listar os arquivos ocultos.

Usando git add

Agora vamos criar um arquivo digitando touch test.txt no Terminal. Em seguida, digite git status para ver o arquivo que você acabou de adicionar.

Como você pode ver, o novo arquivo que criamos aparece em vermelho e nos informa que seu status não é rastreado. Isso significa que o Git vê o arquivo, mas não tem nenhum registro dele.

Digite git add test.txt para dizer ao Git para preparar este arquivo, então digite git status novamente e o Git deve informar que ele sabe sobre um arquivo alterado.

Confirmando arquivos no Git

Agora que adicionamos nosso arquivo, precisamos confirmá-lo para que o Git salve o status do arquivo. Podemos fazer isso em uma única linha, sem abrir nosso editor padrão com o seguinte comando.

git commit -m 'adding our first file'

O sinalizador -m diz ao git que as palavras entre aspas simples são o comentário que acompanha o comando.

Agora nosso repositório tem um único arquivo com seu status salvo.

Criar uma filial

O verdadeiro poder do Git vem quando você começa a ramificar. Digamos que você queira escrever um monte em seu arquivo test.txt, mas não tem certeza se vai acabar mantendo-o e quer ter certeza de que pode voltar ao arquivo em branco no momento. Podemos fazer isso com uma ramificação.

Para criar um branch podemos digitar git checkout -b new-branch . Este é um atalho para criar uma ramificação ao mesmo tempo que fazemos o check-out da ramificação, e é o que eu uso sempre que preciso criar uma ramificação.

Agora abra nosso arquivo test.txt , adicione algum texto a ele e salve-o. Em seguida, use git add e git commit como acima para salvar o estado do arquivo.

Em seguida, digite git checkout master para retornar à ramificação principal padrão e, em seguida, examine o conteúdo do arquivo test.txt novamente. Você notará que todo o texto digitado foi removido. O Git até excluiria um novo arquivo que estava apenas em uma ramificação, embora mantenha um registro dele para que não desapareça.

Mesclar uma filial

Agora, adoramos o que escrevemos em nosso arquivo, então vamos integrá-lo ao nosso branch principal. Certifique-se de estar no branch principal e digite git merge new-branch para integrar suas alterações.

Se você olhar para o conteúdo do test.txt agora, você encontrará suas alterações no branch principal exatamente como você as deixou.

Usando Git com WordPress

Embora o exemplo acima tenha sido extremamente simples, é tudo o que você precisa para começar a usar o Git em seus projetos. Então, vamos falar exatamente como você obtém um projeto WordPress usando o Git.

A primeira consideração é qual nível em sua hierarquia de pastas deve ser a raiz do seu repositório Git. Se você estiver criando um tema, poderá tornar a pasta do tema seu repositório. A mesma lógica se aplica se você estiver construindo um plugin.

Normalmente estou trabalhando em temas e plugins ao mesmo tempo, então costumo usar a pasta wp-content como o local do meu repositório. Quando faço isso, certifico-me de ignorar a pasta de uploads para não adicionar todas as imagens e arquivos carregados no repositório. Eles sobrecarregam o repositório e podem deixar o Git mais lento porque não é bom para compactar arquivos de imagem.

Se estou lidando com um fluxo de trabalho de implantação inteiro, faço da pasta raiz do WordPress o local principal do meu repositório Git. Então, certifique-se de adicionar wp-content/uploads e wp-config.php ao meu arquivo .gitignore . wp-config.php é específico para cada instalação do WordPress, então não quero que ele seja implantado em qualquer outra versão do arquivo que faria com que o site pare de funcionar.

Você pode ver uma cópia do arquivo .gitignore que uso como ponto de partida para cada projeto. Ele assume que você está usando wp-content como a raiz do seu repositório Git, então eu mudo alguns dos padrões de ignorar se eu estiver na raiz do WordPress.

Aplicativos Git GUI

Embora tenhamos abordado o básico por meio da linha de comando do Git, nem todo mundo está confortável na linha de comando, eu sei que não estava quando comecei a usar o Git. Mesmo agora, ocasionalmente, quero ver uma representação visual do que o Git está fazendo antes de fazer qualquer alteração na minha configuração.

Felizmente, existem vários ótimos clientes de GUI para Git que você pode usar, então vamos destacar alguns.

Github Desktop (Windows/macOS)

Um ótimo ponto para começar ao olhar para os clientes Git GUI é com o aplicativo Github Desktop.

Muitos projetos de código aberto usam o Github como repositório de código para colaboração e usam o fluxo padrão do Github para fazer seu trabalho. O cliente Github Desktop foi desenvolvido para ajudá-lo a lidar com esse fluxo, facilitando a criação de solicitações pull.

Se você não tiver certeza do que é um pull request, confira Documentação do Github sobre pull requests

Infelizmente para os usuários do Linux, não existe um aplicativo oficial do Github Desktop, mas existe um fork do Github Desktop que será instalado em sistemas Linux.

Torre Git (Windows/macOS)

A GUI do Git que uso é o Git Tower. O Git Tower está disponível para macOS e Windows. Quando eu estava começando com o Git, achei muito mais fácil resolver conflitos e ver o que havia de diferente entre os arquivos dentro dessa GUI.

Cópia de trabalho (iOS/iPadOS)

Se você trabalha principalmente a partir de um iPad, como eu, então você deve dar uma olhada no Working Copy. O Working Copy é um cliente Git completo que funciona com iOS e iPadOS. Ele ainda possui integração de atalhos para que você possa automatizar partes do seu fluxo de trabalho Git.

Empacotando

Embora tenhamos abordado muito do seu conhecimento sobre Git hoje, não há como uma única postagem no blog ser exaustiva sobre o assunto. Você pode continuar seu aprendizado com a documentação de ajuda do Nexcess, bem como esses excelentes recursos.

  • Documentação do Git
  • Livro Pro Git
  • Lição Git Laracasts
  • Recursos externos próprios do Git

Ao usar o Git para gerenciar seus projetos de clientes, você economizará dores de cabeça, pois poderá reverter as alterações ou descartar ramificações inteiras se não quiser mais o trabalho que fez. Não há mais Ctrl + Z até você achar que recuou o suficiente, o Git acompanhará tudo para você.