Archive for the 'git' Category
Alias para rebase
Resolver conflitos durante um rebase é um processo que pode ser bastante repetitivo, por isso, normalmente utilizo estes dois alias no .gitconfig para ajudar:
[alias]
next = "!git add . && git rebase --continue"
conflict = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; mate `f`"
O "mate" ali no final é para abrir os arquivos em conflito no TextMate, substitua pelo seu editor favorito. Então minha rotina de rebase fica assim:
1. Sincronizando o master
[rogerio] ~/projects/spikes/post_rebase (master)
$ git pull
2. Iniciando rebase
[rogerio] ~/projects/spikes/post_rebase (feature_xpto)
$ git rebase master
4. Conflitos: utilizar o alias para abrir simultaneamente todos os conflitos no seu editor favorito
[rogerio] ~/projects/spikes/post_rebase ((babd371...)|REBASE)
$ git conflict
4. Após resolver os conflitos, aplicar o patch e continuar
[rogerio] ~/projects/spikes/post_rebase ((babd371...)|REBASE)
$ git next
Também é possível configurar o Git para utilizar alguma ferramenta visual para resolução de conflitos, como o DiffMerge, Kdiff3 ou Meld, mas eu pessoalmente prefiro o jeito old school mesmo. Mais informações aqui.
No commentsDica rápida: atualizando um arquivo a partir de outro branch ou revisão (GIT)
Para puxar um arquivo específico de algum outro branch ou versão, pode-se usar o seguinte comando:
git show [repositório]/[branch]:[path do arquivo] > [path para escrever no arquivo local]
Exemplos:
Puxando do branch onde o Zezinho já consertou o arquivo
Supondo que por algum motivo ele ainda não possa integrar ao master, você pode sincronizar apenas o arquivo que interessa direto do branch dele (lembre-se de fazer o git fetch antes):
git show origin/fix_js:public/javascripts/arquivo.js > public/javascripts/arquivo.js
Rollback para uma revisão específica
- git show HEAD~3:public/javascripts/arquivo.js > public/javascripts/arquivo.js
No comments