Git Básico
Introdução
editarGit é um sistema de controle de versão livre e open source,distribuído sob os termos da versão 2 da GNU General Public License, inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do kernel Linux, mas atualmente muito utilizado, por sua eficiência, rapidez e maturidade, em projetos de pequeno e grande porte. Sua manutenção é atualmente supervisionada por Junio Hamano. A facilidade de realizar um versionamento de projeto através desta ferramenta é um dos principais fatores para a sua grande utilização no mercado e, até mesmo, nas universidades de tecnologia, principalmente. Sendo assim, abaixo será encontrado o modo de instalação e configuração do git e os comandos básicos de funcionamento desta incrível ferramenta. [1] [2]
Instalando
editarPara começar a utilizar o git é necessário, primeiramente, instalá-lo no computador. Existem diferentes maneiras para a instalação, as mais fáceis, para cada sistema operacional, estão demonstradas abaixo. [3]
Instalação no Linux
editarNeste tutorial quando não vier ilustração ou anúncio em contrário, sempre estaremos falando de comandos de instalação via terminal, ou seja, interface não-gráfica baseada em comandos (CLI - Command-Line Interface), no shell Unix padrão da distribuição, via de regra o Bash.
Na maior parte das distribuições, incluindo Ubuntu, o sistema já vem munido de git, basta conferir se está lá e se está atualizado com git --version
.
Se não é a versão que você esperava (necessita de versão mais moderna), no Ubuntu e Debian pode instalar via PPA. Se por acaso não tinha *git* instalado no seu sistema (alguns servidores são "pelados" e requerem instalação a parte), numa distribuição baseada no Debian, como Ubuntu, Mint e Elementary, pode-se instalar com *apt*:
# apt update # opcial recomendado
sudo apt install git
Variações não-basicas
editarNeste guia, que é apenas um guia básico orientado às opções mais populares, não estamos dando dicas sobre outras distribuições (menos populares ou com suporte privativo como Apple). No caso de Fedora por exemplo o comando seria
yum install git-core # comando Fedora
Também não faremos nenhuma outra recomendação adicional sobre large files ou versões mais modernas do git. Fica apenas o aviso para os iniciantes não se assustarem com avisos de "need LFS" ou "updated version". Para o caso de versão mais atualizada, confira no git-scm.com/download/linux qual o PPA recomendado, a página vai sugerir algo como ppa:git-core
# obtendo git "mais moderno" ao invés do "mais estável"
sudo add-apt-repository ppa:git-core/ppa
apt update # traz o ppa
sudo apt install git # instala conforme o ppa
Como iniciante prefira sempre o mais estável e as opções default, recorrendo a variações apenas se for realmente necessário.
Instalação no Windows
editarNo Windows, os mais simples são o desktop.github.com e o Git Bash. Ambos permitem escrita dos comandos através de um prompt. Ver mais detalhes em Git Básico/GitHubDesktop.
Instalação no Mac
editarQuando se está utilizando um Mac é exigido usar o instalador gráfico do Git, disponível na página do SourceForge: http://sourceforge.net/projects/git-osx-installer/.
Configurando
editarApós a instalação, algumas configurações devem ser realizadas para o correto funcionamento do git. Primeiramente, uma identificação do usuário é primordial. Para isso, basta digitar:
(usando $NomeDaVariável
para os prenchimentos livres/placeholders e comentando ao lado com # comentário
)
git config --global user.name "$seu_nome" # ex. João Silva
git config --global user.email "$seu_eMail" # ex. jsilva123@example.com
Exemplo:
git config --global user.name "João Silva"
git config --global user.email "jsilva123@example.com"
Outras configurações podem ser realizadas, mas são opcionais. Caso estas não sejam feitas, o git usará o padrão. Dentre as diversas existentes, pode-se citar:
- Configuração de editor:
git config --global core.editor $nome_do_editor_de_texto # ex. vi
- Configuração de diff:
git config --global merge.tool $nome_da_tool_diff # vimdiff
- Configuração de cor:
git config --global color.ui true
Há também a possibilidade de verificar as configurações do git através do seguinte comando:
git config --list
Comandos Básicos
editarA seguir o passo-a-passo do Try-Git[4].
O "básico do básico" depende do contexto, o usual para operações diretas no master é:
- Clone: traz o repositório para a sua máquina.
git clone
- Pull: sincroniza o seu repositório local com o online, trazendo atualizações.
git pull
- Push: depois de alterações locais, permite enviar online.
git add .
seguido degit commit -m "comentário"
egit push
Para trabalho mais sério ou em grandes equipes, é importante também criar um branch para o seu trabalho local, modo que o pull e push serão relativos ao branch... Requer um pouco mais de sofisticação do usuário git, mas está tudo descrito a seguir entre os comandos básicos.
Inicialização
editarA primeira coisa a se fazer quando se deseja versionar um projeto através do git é iniciar um repositório. Para isso, vá até a pasta do projeto e dê apenas $ git init, caso não haja nada na pasta. Quando a pasta já possui arquivos existentes deve-se, então entrar na pasta e:
# Iniciar o repositório
git init
#Adicionar todos os arquivos existentes
git add .
#Criar o primeiro commit no histórico de versões
git commit -m "Initial commit"
Exemplo:
Clonar projeto
editarQuando se inicia o projeto no próprio GitHub, por exemplo, ou se é um colaborador, para que o repositório seja local também, se faz necessária a clonagem do projeto no computador. O comando $ git clone <url_do_projeto> é usado para este fim.
Verificação do status
editarSempre que desejar verificar o status do repositório basta rodar $ git status. Caso tenha adicionado, modificado e/ou deletado arquivos, aparecerão os caminhos (dentro da pasta) dos mesmos. Caso nada tenha sido feito, aparecerá a frase "On branch <nome_da_branch>. Your branch is up-to-date with origin/<nome_da_branch>. Nothing to commit, working directory clean".
Exemplo:
Adição de arquivos novos e/ou modificados
editarTodas as alterações e adições de arquivos devem ser adicionadas ao git. Há duas maneiras de realizar esta ação: $ git add . ou $ git add <caminho_do_arquivo>. Na primeira, o ponto indica que se deseja adicionar tudo; e na segunda, adiciona-se uma modificação/adição por vez. Apesar de parecer ser uma maneira muito simples e rápida, utilizar $ git add . não é aconselhável, visto que arquivos pessoais, de configuração, de banco de dados e outros indesejáveis podem ser adicionados sem querer.
Remoção de arquivos
editarAssim como todas as modificações devem ser adicionadas ao git, o mesmo deve acontecer para as deleções. Porém, diferentemente da adição, não há uma maneira de deletar todos os arquivos de uma única vez, os mesmo devem ser deletados um a um através do comando $ git rm <caminho_do_arquivo>.
Desfazer modificações
editarAlgumas vezes, sem querer, modifica-se arquivos que acabam não dando certo ou "quebrando" o sistema. A primeira coisa a se fazer é, obviamente, tentar resolver o problema, porém, como uma última opção, pode-se desfazer os arquivos modificados com $ git checkout -- <caminho_do_arquivo>.
Commits
editarApós adicionar e/ou remover os arquivos, deve-se armazenar as mudanças, ou seja, realizar um commit das mesmas. Há diferentes variações do comando. Para commitar, abrindo o editor:
git commit
Neste caso, deve-se escrever uma mensagem, de preferência com uma breve descrição da alteração e onde ela foi realizada, salvar e sair. Para commits com mais de um participante é aconselhável:
git commit -s
O "-s" abre no editor o "Signed-off-by: nome_do_usuario <email_do_usuario>", usado para identificar os participantes do commit. Para commitar já escrevendo a mensagem, sem abrir o editor:
git commit -m "Mensagem do commit"
Também é possível commitar como outro autor, ou seja, usuário diferente do que está configurado no computador. Observação: o "-m "Mensagem do commit"" também pode ser usado neste caso, logo após o comando:
git commit --author="Nome do Usuário <email_do_usuario>"
Caso algo de errado tenha acontecido no commit anterior, como por exemplo, uma mensagem incompleta, o problema é extremamente fácil de resolver:
git commit --amend
Exemplo:
Histórico de commits
editarQuando se deseja verificar os commits feitos anteriormente, com seu código, data e hora, autor e mensagem, basta escrever $ git log.
Exemplo:
Remote
editarPara que seja criado um repositório remoto no GitHub, por exemplo, é necessário que se adicione os arquivos locais neste repositório. Para isso, digite $ git remote add origin https://github.com/<nome_do_usuario ou nome_da_organização>/ <nome_do_repositório>.git.
Ramos de Trabalho (Branches)
editarUma das funcionalidades mais úteis do git é sua possibilidade de criar diferentes ramos (branches) de trabalho. Assim, vários colaboradores conseguem modificar diferentes arquivos com risco mínimo de dar conflitos. Todo repositório já possui, por default, uma branch chamada master. Para criar novas branches, digite $ git checkout -b <nome_da_branch>, e para verificar as branches existentes e em qual encontra-se $ git branch. Para mudar de uma branch para outra: $ git checkout <nome_da_branch>. Depois de realizado um rebase e um merge (encontrados na aula de git avançado) a branch torna-se inútil. Sendo assim, pode-se mudar de branch e excluí-la com $ git branch -d <nome_da_branch>.
Exemplo:
Push
editarCom todas as modificações adicionadas, commitadas e na branch correta, é necessário que essas mudanças sejam adicionadas, também, ao repositório remoto. Digite git push origin $nome_da_branch
e isso ocorrerá.
Usar a flag --force faz com que o repositório remoto fique igual ao seu repositório local, deletando quaisquer alterações feitas antes do seu último pull. É recomendável que se utilize o comando $git push <remote> --force ou $git push -f apenas quando se tem certeza do que está sendo feito.
Pull
editarConsiderando que vários colaboradores estejam participando do projeto, cada um em sua branch, sempre haverá alterações nos arquivos. A fim de manter o seu projeto atualizado é necessário ter essas mudanças no seu repositório local, além do remoto. Para isso, existem duas variações do comando pull. Quando se deseja atualizar todo o projeto, dá-se: $ git pull e quando atualizar uma branch específica já satisfaz a necessidade, digita-se: $ git pull origin <nome_da_branch>.
Diferenças entre commits
editarSempre que achar necessário diferenciar commits basta digitar $ git diff. Por exemplo, quando deseja-se comparar o arquivo atual com o do commit mais recente: $ git diff HEAD.
Exemplo: