Projeto

Geral

Perfil

Comandos básicos do Git

Branches

Listar branches

$ git branch
$ git branch -a

O ramo que tiver um '*' é o ramo ativo

Selecionar branch

$ git checkout <nome_do_branch>

Ativa o branch como padrão

Criar branch

$ git branch <nome_do_branch>

Posicionar no branch a partir do qual será gerado o novo branch. Ex: master

Criar branch local e associar com branch remoto

$ git branch --track <nome-branch-local> origin/<nome-branch-remoto>

Excluir branch

$ git branch -d <nome_do_branch>

Use -D para forçar exclusão do branch mesmo que existam diferenças

Mesclar branches

$ git merge <nome_branch_mesclar>

Posicionar no branch que receberá o merge
Em caso de conflito fazer git mergetool

Criar um branch a partir de uma tag

$ git checkout -b <nome-do-branch> tags/<nome-da-tag>

Posicionar um branch em uma revisão

$ git reset --hard <hash-da-revisao>
$ git reset --hard HEAD

Commitar uma revisão qualquer sobre um branch

$ git cherry-pick --edit <hash-da-revisao>

Posicionar primeiramente no branch que receberá o commit

Remover um branch do repositório principal

$ git push origin --delete <remoteBranchName>

Operações sobre o repositório

Exibir situação do repositório

$ git status

Lista a situação do repositório, mostrando o ramo ativo, posição do ponteiro do ramo em 
relação ao remoto, arquivos modificados e arquivos pendentes de commit

Adicionar um servidor remoto

$ git remote add <nome-repositorio> <caminho>

Exemplo:

$ git remote add repo-externo https://github.com/ComunidadeExpresso/expressomobile.git

Atualizar repositório local com a versão mais recente do repositório remoto

$ git pull

Posicionar no branch que receberá as atualizações

Enviar dados do branch para o servidor remoto

$ git push

Posicionar no branch que será origem do envio

ou:

$ git push <nome-repositorio> <nome_branch>

Exemplo: git push origin master

Ver o log

$ git log
$ git log -4

Exibir informações do repositório remoto

$ git remote show <nome-repositorio>

Exemplo: git remote show origin

Atualizar repositório local com últimas atualizações dos remotos

$ git fetch --all

Salvar as atualizações locais antes de atualizar o repositório

$ git pull --rebase

Irá salvar as alterações locais, atualizar o repositório local a partir do remoto e reaplicar as 
atualizações locais

Listar dados estatísticos de revisões

$ git log --no-merges --author="Nome Completo" --stat --pretty=oneline  db00991..001eb43

Operações sobre arquivos

Adicionar arquivos na área de staging

$ git add <arquivo>
$ git add *
$ git add --all

Irá marcar os arquivos modificados como prontos para serem enviados ao repositório local (commit)

Remover arquivos do repositório

$ git rm <arquivo>
$ git rm <pasta>

Reverter a atualização em um arquivo

$ git checkout <arquivo>

Commit dos arquivos da área de staging

$ git commit -m "Issue #<nnnn> - <Comentários das alterações>" 

Onde <nnnn> é o número da Issue a que se refere o commit

Exemplo:

$ git commit -m "Issue #1885 - Implementa o construtor da classe Imap" 

O uso do número da issue no comentário do commit fará com que o Redmine anote no histórico da issue 
o número da revisão do commit

Caso uma mensagem de commit esteja fora do padrão, o servidor irá retornar um aviso de erro e o push 
não será efetivado

Colocar alterações locais em área temporária

$ git stash -u -a

Irá salvar as atualizações locais e retornar o repositório à posição da última sincronização

Retornar alterações na área temporária

$ git stash pop

$ git stash apply

Pode ser combinado com o identificador do pacote. Por exemplo:

$ git stash pop stash@{1}

Visualizar diferenças

$ git diff <branch_origem> <branch_destino>

$ git diff <commit> <commit>

$ git diff <arquivo>

Aplicar um patch

$ patch -p1 -i <arquivo-diff>

Gere o arquivo de diferenças com o comando git diff

Corrigir a descrição do último commit antes do push

$ git commit --amend

Corrigir a descrição do último commit após o push

$ git commit --amend

$ git push --force-with-lease

Alterar o comentário de uma revisão antiga

$ git pull --rebase
$ git rebase HEAD~5
  (mostra 5 revisões e permite navegar sobre elas e alterar o comentário)
$ git push -f

Posicionar no commit anterior ao topo

$ git reset HEAD~1

Tags

Criar uma tag

$ git tag <nome-da-tag>

Posicionar no branch que será origem da tag

Remover uma tag

$ git tag -d <nome-da-tag>

Enviar tags para o repositório remoto

$ git push --tags

Remover uma tag no repositório remoto

$ git push --delete origin <nome-da-tag>

Listar tags do repositório local

$ git tag

Listar tags do repositório remoto

$ git ls-remote --tags origin

Softwares com interface gráfica para git

* git-gui
* gitk