Saltar para o conteúdo

Git Básico

Fonte: Wikiversidade

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]

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 | editar código-fonte]

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 | editar código-fonte]

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 | editar código-fonte]

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 | editar código-fonte]

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

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 | editar código-fonte]

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 | editar código-fonte]

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:

Iniciando um repositório vazio

Clonar projeto

[editar | editar código-fonte]

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 | editar código-fonte]

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:

Status do repositório

Adição de arquivos novos e/ou modificados

[editar | editar código-fonte]

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 | editar código-fonte]

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 | editar código-fonte]

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

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:

Commit com mensagem

Histórico de commits

[editar | editar código-fonte]

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

Exemplo:

Histórico de commits

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 | editar código-fonte]

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:

Criação, mudança e visão de branch

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 | editar código-fonte]

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:

Diferença entre commits

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