quinta-feira, 18 de abril de 2019

Configurações básicas e globais


Usuario e email para serem exibidos nos commites:
git config --global user.name "[seu nome]"
git config --global user.email [seu e-mail]

Tratamento de espaços em branco
git config --global apply.whitespace nowarn
git config --global core.whitespace nowarn


Definição de cores para o modo console:
git config --global color.branch auto
git config --global color.diff auto
git config --global color.status auto
git config --global color.interactive auto


Definir editor de texto padrão para o diretório de trabalho:
git config --global core.editor "vim";



Alias

Com o alias, você pode criar atalhos aos comando do GIT.

Criar Atalhos de comando:
$ git config --global alias.co checkout;
$ git config --global alias.br branch;
$ git config --global alias.ci commit;
$ git config --global alias.st status;
$ git config --global alias.ls "log --stat"

Logs detalhados em modo gráfico
$ git config --global alias.lsg "log --stat --graph"

Pull tags
$ git config --global alias.pt '!git tag -l | xargs git tag -d && git fetch -t'

Desfaz modificações de stash
$ git config --global alias.stash-unapply '!git stash show -p | git apply -R'

Para usar o atalho de comando, digite por exemplo:
git st
git co



Trabalhando com Repositórios

Criar repositório
mkdir [dir]
cd dir
git init

Cópia de trabalho de um repositório
git clone [origin] [nova pasta]

Acrescentando +uma URL remota ao diretório local
git remote add

Adicionar arquivo(s) específicos ao próximo commit:
git add [arquivo1] [arquivo2] ...

ou para adicionar todos aquivos apresentados no git status ao próximo commit:
git add .

Persistir as mudanças (commit)
git commit -m "[mensagem]"

Atualizar repositório local
git pull

Enviar atualizações ao repositório remoto
git push [origin] [branch]

Visualizar status do repositório local
git status

Verificar mudanças em arquivos adicionados com git add
git diff

Verifica mudanças entre commits
git diff [ID1] [ID2]


Histórico dos commits
git log

Histórico dos commits em modo gráfico
git log --graph

Histórico dos commits em uma linha
git log --oneline

Histórico dos commits em uma linha (5 últimos)
git log --oneline -n5

Histórico dos commits em uma linha modo gráfico
git log --oneline --graph

Histórico dos commits detalhado
git log --stat

Histórico dos commits detalhado em modo gráfico
git log --stat --graph


Verificar mudanças em um commit específico
git show [ID]


Verificar mudanças em um arquivo de um commit
git show [ID] [arquivo]

Verificar mudanças em uma atualização
git show -U1


Rollback do commit atual
  • 1º modo: O ponteiro HEAD será movido para o commit anterior e as áreas de stage e working não serão alteradas.
    $ git reset --soft HEAD~
  • 2º Modo: O ponteiro HEAD será movido para o commit anterior ao atual, a área de stage terá o mesmo conteúdo do commit apontado pelo HEAD e o diretório de working não será modificado.
    $ git reset HEAD~
    ou
    $ git reset --mixed HEAD~
    
  • 3º Modo: O ponteiro HEAD será movido para o commit anterior e as áreas de stage e working serão revertidas para o mesmo estado do commit apontado pelo HEAD descartando completamento todas as modificações realizadas. Cuidado com esse procedimento pois não há como recuperar!
    git reset --hard HEAD

Voltando ao commit anterior, mas criando um novo commit
git revert HEAD

Voltando a um commit específico, e criando um novo commit
git revert --no-edit HEAD e27242bd40b9

Patches

Criando e aplicando vários patch de um branch
git checkout [branch]
git format-patch --stdout master > patch
git am --whitespace=nowarn patch




Trabalhando com Branches


Criar um Branch
git branch [branchname]

Criar e tornar ativo o novo branch
git checkout -b [branchname]

Criar um branch baseado em um ID de versionamento específico
git branch [branchname] [ID]

Persistir os branches criados no servidor remoto
git push --all

Persistir específicamente um branch criado no servidor remoto
git push [urlserver|aliasserver] [branchname]

Exemplos:
git push origin frontend

Trocar de Branch
git checkout [branchname]

Verificar o branch atual
git branch

Verificar detalhes de branches
git branch -v

Deletar um branch local
Remove o branch local somente se foi publicado (push) e mescardo(merge) com seu branch remoto
git branch -d [branchname]

Equivalente ao --delete --force, não há garantias e não poderá ser recuperado.
git branch -D [branchname]

Deletar um branch remoto
git push [remote_name] --delete [branchname]
git push origin :frontend

Mesclar de branches [branch1] ao [branch2]
git checkout [branch2]
git merge [branch1]


Trabalhando com Tags


Para listar TAG existentes
git tag -ln

Para criar uma TAG
git tag [tagname]

Exemplo tag chamada v0.01 no commit atual execute:
git tag v0.01

Para criar uma TAG referente ao commit específico
git tag [tagname] [ID]
exemplo tag v0.01 referente ao commit 4b8ef995de6d77:
git tag v0.01 4b8ef995de6d77
Para criar uma TAG com comentário e referente ao commit específico
git tag -f -a [tagname] -m 'comentario' [ID]
Exemplo:
git tag -f -a buildout_plone255 -m 'ambiente plone-2.5.5 com supervisor + haproxy' 87b29a

Para submete-la para o servidor remoto
git push --tags [alias-da-url] [branchname]
Exemplo:
git push --tags origin master

Para deletar uma TAG execute:
git tag -d v0.01
git push origin :refs/tags/v0.01

Para voce mover para o commit da TAG execute:
git checkout v0.01

Para voce atualizar a listagens das TAG execute:
git pull --tags origin master

Estudo de caso Branch + Clone

git clone https://rbrito1978@code.google.com/p/templates-buildout/
git checkout p255
git branch -v
ou
git clone -o origin -b p255 https://rbrito1978@code.google.com/p/templates-buildout/

Rebase de Branch no Master

  • git co 1460729321
  • git branch
    * 1460729321
      master
    
  • git pull --rebase origin master
  • git co master
  • git merge origin/1460729321

Trabalhando com stash

Detalhes podem ser acompanhados em Git: stash.

O comando stash cria um Work In Progress (WIP), do estado atual do branch ativo, retornando-o para o momento anterior em que não havia alterações.

Isto é útil em situações em que há a necessidade de criar novos branches sem perder a codificação atual.

Criar stash:

  • git stash
Listar stash(es):
  • git stash list
Ativar último stash:
  • git stash apply
Ativar stash específico:
  • git stash apply stash@{2}
Ativar stash com Changes not staged:
  • git stash apply --index
Remover stash da pilha:
  • git stash drop
    $ git stash list
    stash@{0}: WIP on master: 049d078 added the index file
    stash@{1}: WIP on master: c264051... Revert "added file_size"
    stash@{2}: WIP on master: 21d80a5... added number to log
    
    $ git stash drop stash@{0}
    Dropped stash@{0} (364e91f3f268f0900bc3ee613f9f733e82aaed43)
    
Revert o último stash:
  • git stash show -p | git apply -R
Revert um stash específico:
  • git stash show -p stash@{0} | git apply -R
Criar um branch a partir de um stash:
  • git stash branch
Visualizar as diferenças do último stash:
  • git stash show -p
Visualizar as diferenças do um stash específico:
  • git stash show -p stash@{1}
Remover todos os stash(es):
  • git stash clear

Troubleshooting

Conflito em atualização

Manter versão remota
git pull -X theirs
Manter versão local
git pull -X ours

Atualizações

  • 04/11/2013 09:15
  • 22/05/2018 11:47
  • 20/11/2018 11:33
  • 01/01/2019 09:25
  • 23/03/2019 07:56
  • 28/03/2019 09:35
  • 31/03/2019 21:19

0 comentários: