Introdução

editar

Git é 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

editar

Para 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

editar

Neste 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

editar

Neste 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

editar

No 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

editar

Quando 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

editar

Apó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

editar

A 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 é:

  1. Clone: traz o repositório para a sua máquina. git clone
  2. Pull: sincroniza o seu repositório local com o online, trazendo atualizações. git pull
  3. Push: depois de alterações locais, permite enviar online. git add . seguido de git commit -m "comentário" e git 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

editar

A 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

editar

Quando 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

editar

Sempre 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

editar

Todas 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

editar

Assim 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

editar

Algumas 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

editar

Apó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

editar

Quando se deseja verificar os commits feitos anteriormente, com seu código, data e hora, autor e mensagem, basta escrever $ git log.

Exemplo:

 

Remote

editar

Para 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)

editar

Uma 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:

 

Com 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.

Considerando 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

editar

Sempre 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:

 

Referências

editar
  1. [1], Git—fast-version-control.
  2. [2], Git: Wikipédia.
  3. [3], Git—fast-version-control:Documentação.
  4. [4], Try-Git.