Aluizio Developer

Git - Conhecendo o sistema de versionamento mais popular

Um dos sistemas de controle de versão mais populares para software é o Git. O Git foi criado em 2005 por Linus Torvalds, o criador do kernel do Linux.

Aluizio Developer

Git

Um dos sistemas de controle de versão mais populares para software é o Git. O Git foi criado em 2005 por Linus Torvalds, o criador do kernel do Linux. Originalmente utilizado para o desenvolvimento do kernel Linux, Junio ​​Hamano é o atual mantenedor do projeto.

Muitos projetos mantêm seus arquivos em um repositório Git, e sites como GitHub, GitLab e Bitbucket tornaram o compartilhamento e a contribuição para o código, simples, valioso e eficaz. Todo diretório de trabalho no Git é um repositório completo com histórico e rastreamento completos, independentemente do acesso à rede ou de um servidor central.

O controle de versão se tornou uma ferramenta indispensável no desenvolvimento de software moderno, porque esses sistemas permitem acompanhar o software no nível da fonte. Você e outros membros de uma equipe de desenvolvimento podem rastrear alterações, reverter para os estágios anteriores e se ramificar do código base para criar versões alternativas de arquivos e diretórios.

Instalando o Git no Linux Debian ou Ubuntu

Você pode usar as ferramentas de gerenciamento de pacotes apt para atualizar seu índice de pacotes local. Depois, você pode baixar e instalar o programa:

sudo apt update

sudo apt install git

Instalando o Git no macOS

Você pode instalar a versão mais recente do Git no seu Mac instalando-a através do instalador binário. Há um instalador do OS X Git mantido e disponível para download no site do Git.

Instalando o Git no Windows

Para Windows, a versão oficial está disponível para download no site do Git.

Configurando o Git

A maneira mais fácil de fazer a configuração das suas informações no Git é através do comando git config. Especificamente, precisamos fornecer nosso nome e endereço de email, porque o Git incorpora essas informações em cada confirmação que fazemos. Podemos prosseguir e adicionar essas informações digitando:

git config --global user.name "Your Name"

git config --global user.email "youremail@domain.com"

As informações são armazenadas no seu arquivo de configuração do Git, ~/.gitconfig. Podemos ver todos os itens de configuração que foram definidos digitando:

git config --list

Com o Git instalado e configurado em sua máquina local, você está pronto para usar o Git para controle de versão de seus próprios projetos de software, além de contribuir para projetos de código aberto abertos ao público.

Primeiros passos com o Git

Verifique a versão do Git com o seguinte comando, que irá também confirmar que o git está instalado.

git --version

Você pode inicializar seu diretório de trabalho atual como um repositório Git com o init.

git init

Para copiar um repositório Git existente hospedado remotamente, você irá utilizar git clone com a URL do repositório ou a localização do servidor (no último caso você irá usar ssh).

git clone https://github.com/aluiziodeveloper/api-nodejs-deploy

Mostrar o repositório remoto do seu diretório Git atual.

git remote

Para uma saída mais detalhada, use a flag -v.

git remote -v

Adicionar o Git upstream, que pode ser uma URL ou pode estar hospedado em um servidor (no último caso, conecte com ssh).

git remote add upstream https://github.com/aluiziodeveloper/api-nodejs-deploy

Staging

Quando você modificou um arquivo e o marcou para ir no próximo commit, ele é considerado um arquivo preparado ou staged.

Verifique o status do seu repositório Git, incluindo arquivos adicionados que não estão como staged, e arquivos que estão como staged.

git status

Para colocar como staged os arquivos modificados, utilize o comando add, que você pode executar diversas vezes antes de fazer um commit. Se você fizer alterações subsequentes que queira ver incluídas no próximo commit, você deve exwcutar add novamente.

Você pode especificar o arquivo exato com o add.

git add meu_script.py

Com o . você pode adicionar todos os arquivos no diretório atual incluindo arquivos que começam com um ..

git add .

Você pode remover um arquivo da área de staging enquanto mantém as alterações no seu diretório de trabalho com reset.

git reset meu_script.py

Fazendo Commit

Um vez que você tenha colocado no stage a suas atualizações, você está pronto para fazer o commit delas, que irá gravar as alterações que você fez no repositório.

Para fazer commit dos arquivos em stage, você irá executar o comando commit com sua mensagem de confirmação significativa para que você possa rastrear os commits.

git commit -m "Mensagem de commit"

Você pode condensar o staging de todos os arquivos rastreados fazendo o commit deles em uma única etapa.

git commit -am "Mensagem de commit"

Se você precisar modificar a sua mensagem de commit, você pode fazer isto com a flag --amend.

git commit --amend -m "Nova Mensagem de commit"

Branches ou Ramificações

Uma branch ou ramificação é um ponteiro móvel para um dos commits no repositório. Ele lhe permite isolar o trabalho e gerenciar o desenvolvimento de recursos e integrações. Você pode aprender mais sobre branches através da leitura da documentação do Git.

Listar todas as branches atuais com o comando branch. Um aterisco * irá aparecer próximo à sua branch ativa atualmente.

git branch

Criar uma nova branch. Você permanecerá na sua branch ativa até mudar para a nova.

git branch nova-branch

Alternar para qualquer branch existente e fazer checkout em seu diretório de trabalho atual.

git checkout outra-branch

Você pode consolidar a criação e o checkout de uma nova branch utilizando a flag -b.

git checkout -b nova-branch

Renomear a sua branch.

git branch -m nome-da-branch-atual novo-nome-da-branch

Mesclar o histórico da branch especificada àquela em que você está trabalhando atualmente.

git merge nome-da-branch

Abortar a mesclagem, no caso de existirem conflitos.

git merge --abort

Você também pode selecionar um commit particular para mesclar com cherry-pick e com a string que referencia o commit específico.

git cherry-pick f7649d0

Quando você tiver mesclado uma branch e não precisar mais dela, poderá excluí-la.

git branch -d nome-da-branch

Se você não tiver mesclado uma branch com o master, mas tiver certeza de que deseja excluí-la, poderá forçar a exclusão da branch.

git branch -D nome-da-branch

Ignorando Arquivos

Se você quiser manter arquivos em seu diretório local do Git, mas não quer fazer o commit deles no projeto, você pode adicionar esses arquivos ao seu arquvo .gitignore para que não causem conflitos.

Utilize um editor de textos como o nano para adicionar arquivos ao arquivo .gitignore.

nano .gitignore

Para ver exemplos de arquivos .gitignore, você pode olhar o repositório de modelos .gitignore do GitHub.

Colaborar e Atualizar

Para baixar alterações de outro repositório, tal como o upstream remoto, você irá usar o fetch.

git fetch upstream

Mesclar os commits baixados.

git merge upstream/master

Envie ou transmita seus commits na branch local para a branch do repositório remoto.

git push origin master

Busque e mescle quaisquer commits da branch remota de rastreamento.

git pull

Inspecionando

Mostrar o histórico de commits para a branch ativa atualmente.

git log

Mostrar os commits que alteraram um arquivo particular. Isso segue o arquivo, independentemente da renomeação do mesmo.

git log --follow meu_script.py

Mostrar os commits que estão em uma branch e não estão em outra. Isto irá mostrar os commits em a-branch que não estão em b-branch.

git log a-branch..b-branch

Observe os logs de referência (reflog) para ver quando as dicas de branches e outras referências foram atualizadas pela última vez dentro do repositório.

git reflog

Mostrar qualquer objeto no Git através da sua string de commit ou hash em um formato mais legível.

git show de754f5

Mostrar Alterações

O comando git diff mostra as alterações entre commits, branches, entre outras. Você pode ler mais detalhadamente sobre isso através da Documentação do Git.

Comparar arquivos modificados que estão na área de staging.

git diff --staged

Exibe o diff do que está em a-branch mas não está em b-branch.

git diff a-branch..b-branch

Mostrar o diff entre dois commits específicos.

git diff 61ce3e6..e221d9c

Stashing

Às vezes, você descobrirá que fez alterações em algum código, mas, antes de terminar, precisa começar a trabalhar em outra coisa. Você ainda não está pronto para fazer o commit das alterações que você fez até agora, mas não quer perder seu trabalho. O comando git stash lhe permitirá salvar suas modificações locais e reverter para o diretório de trabalho que está alinhado com o commit mais recente do HEAD.

Guarde (stash) seu trabalho atual.

git stash

Veja o que você tem guardado atualmente.

git stash list

Seus rascunhos serão nomeados stash@{0}, stash@{1}, e assim por diante.

Mostrar informações sobre um rascunho em particular.

git stash show stash@{0}

Para trazer os arquivos de um rascunho atual enquanto mantém o rascunho guardado, utilize apply.

git stash apply stash@{0}

Se você quer trazer os arquivos de uma rascunho e não precisa mais do rascunho, utilize pop.

git stash pop stash@{0}

Se você não precisar mais dos arquivos salvos em um determinado rascunho ou stash, você pode descartar o rascunho com drop.

git stash drop stash@{0}

Se você tiver muitos rascunhos salvos e não precisar mais de nenhum deles, você pode utilizar clear para removê-los.

git stash clear

Rebasing

Um rebase nos permite mover as branches alterando o commit no qual elas são baseadas. Como o rebasing, você pode reescrever ou reformular os commits.

Você pode iniciar um rebase chamando o número de commits que você fez e que você quer fazer rebase (5 no caso abaixo).

git rebase -i HEAD~5

Como alternativa, você pode fazer o rebase com base em uma determinada string de commit ou hash.

git rebase -i 074a4e5

Depois de ter reescrito ou reformulado os commits, você pode concluir o rebase da sua branch em cima da versão mais recente do código upstream do projeto.

git rebase upstream/master

Resetando

Às vezes, inclusive após um rebase, você precisa redefinir sua árvore de trabalho. Você pode redefinir ou resetar para um commit específico e excluir todas as alterações com o seguinte comando.

git reset --hard 1fc6665

Para forçar a enviar seu último commit conhecido e não conflitante para o repositório de origem, você precisará usar o --force.

Atenção: Forçar o envio ou pushing para o master não é muito aprovado a menos que haja uma razão realmente importante para fazê-lo. Use isso com moderação ao trabalhar em seus próprios repositórios e evite fazer isso quando estiver colaborando.

git push --force origin master

Para remover arquivos e subdiretórios locais não rastreados do diretório Git para uma branch de trabalho limpa, você pode usar git clean.

git clean -f -d

Se você precisar modificar seu repositório local para que ele pareça com o upstream master atual (isto é, quando há muitos conflitos), você pode executar um hard reset.

Nota: Executar este comando fará com que seu repositório local fique exatamente igual ao upstream. Todos os commits que você fez, mas que não foram enviados para o upstream, serão destruídos.

git reset --hard upstream/master

Conclusão

Este guia aborda alguns dos comandos mais comuns do Git que você pode usar ao gerenciar repositórios e colaborar em software.

git --help

Você também pode ler mais sobre o Git e ver a documentação dele no website oficial do Git.

Referências:

https://www.digitalocean.com/community/tutorials/how-to-contribute-to-open-source-getting-started-with-git

https://www.digitalocean.com/community/cheatsheets/how-to-use-git-a-reference-guide

Comentários