12 Oct
Depois que eu passei a trabalhar com git, o eclipse começou a me torrar muito a paciência. Toda vez que eu mudava de branch ele perguntava se eu queria atualizar os arquivos abertos. E depois eu tinha que atualizar o projeto para tudo voltar a funcionar.
Depois de quase me conformar, vi um tweet do Miško Hevery (http://twitter.com/mhevery/statuses/3439314089) com exatamente a solução para o problema.
Você só precisa ir em Preferences -> General -> Workspace e marcar refresh automatically. Essa foi umas das descobertas que mais melhorou meu humor nos últimos tempos.
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.
12 Aug
O post de hoje é do nosso amigo Lucas Cavalcanti, desenvolvedor da Caelum.
Usando git, sempre é bom trabalhar em branches, nunca commitar diretamente na branch master.
Acontece que às vezes você simplesmente esquece de criar uma branch antes de começar a trabalhar
e commita várias coisas no master. O problema disso é que se você der um git pull origin master
e acontecer um conflito de merge, você vai ter que resolver todos os conflitos de uma vez só,
e ganhar um commit “Merge branch blablablah” que some com algumas informações de commit…
O que fazer então?
Um jeito legal de prevenir isso é digitando os comandos:
(master) $ git branch temp
# cria uma branch pra guardar o estado atual
(master) $ git reset --hard HEAD@{1}
# volta o estado do branch master para a última
# ação perigosa que você fez, geralmente
# o último push que vc fez no servidor
(master) $ git pull origin master
# agora sim fazendo um pull seguro
(master) $ git checkout temp
(temp) $ git rebase master
# e corrige os eventuais conflitos do jeito certo
(temp) $ git checkout master
(master) $ git merge temp
(master) $ git push origin master
(master) $ git branch -d temp
Assim você corrige a cagada de trabalhar no master sem querer e continua a trabalhar com o git
do jeito certo.
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.
20 Jul
Umas das coisas legais que bash tem é uma variável que define como deve ser o prompt da linha de comando. Essa variavel de ambiente se chama PS1. Um dos usos mais incríveis que já vi dela foi o de mostrar em qual branch do git você está (e não mostrar nada quando você não está em um repositório).
Isso é a diferença entre

e isso

Não sei quanto a vocês, mas eu realmente fico mais feliz com a segunda forma.
A minha variável PS1 é configurada da seguinte forma (mac - ~/.bash_profile - linux - ~/.bashrc):
export PS1="\[\033[38m\]\u\[\033[32m\] \w \[\033[31m\]\`git \\ branch 2>/dev/null | grep \"^\*\" | \\ sed -r \"s/\*\ (.*)/ \(\1\)/\"\`\[\033[37m\]$\[\033[00m\] "
Impossível de ler, correto? Vou quebrar em mais linhas para facilitar a vida.
PS1="\[\033[38m\]\u";
PS1="$PS1\[\033[32m\] \w";
PS1="$PS1\[\033[31m\]";
PS1="$PS1\`git branch 2>/dev/null | grep \"^\*\" | \\
sed -r \"s/\*\ (.*)/ \(\1\)/\"\`";
export PS1="$PS1\[\033[37m\]$\[\033[00m\]";
Não testei, mas deve ter o mesmo efeito. Explicando um pouco da mágica:
A versão anterior que eu usava da PS1 usava ruby pra fazer essa mágica toda, mas dessa forma não depende mais do ruby instalado na máquina.
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.
6 Jul
Recentemente passei a utlizar git em todos os meus projetos (depois de sofrer muito com a lentidão do sourceforge e outros repositórios svn).
Me atrapalhei um pouco no começo por não entender os conceitos por trás de repositórios distribuídos, mas no fim das contas o que realmente era importante é que o meu fluxo de trabalho tinha mudado e eu não estava entendendo isso direito até eu pedir para o Fábio Kung sentar do meu lado e me explicar o workflow com o git. Como muitos não tem a chance de fazer isso, aqui fica o que eu aprendi (e estou usando com frequência agora).
git clone URL_REPOSITORIO PASTA_LOCAL_PARA_ARQUIVOS
Com isso foi criado o seu branch principal, chamado master.
git checkout -b work
checkout é o comando para você trocar de branch. Se você acrescentar um “-b”, ele também cria o branch pra você. Chamei meu branch de work, mas ele poderia ter qualquer outro nome.
git commit -a -m "mensagem de commit"
Lembrem-se sempre de que mensagens de commit são importantes. Escreva mensagens que esclarecem o que foi feito.
Além disso, a flag “-a” que eu coloquei ali indica para o git commitar todas as modificações que foram feitas. Se você quiser algo mais granular, pode usar:
git add NOME_DO_ARQUIVO
ou
git add -i
No qual você pode escolher os arquivos a commitar. Bem interessante.
Não esqueça de fazer o commit sem o “-a” depois se for fazer assim.
git checkout master git pull origin master
Na primeira vez que você tentar dar pull você tem que informar de onde (origin) e para onde (master). Depois você pode apenas usar git pull, porque o git é espertinho e lembra o que você quer.
git checkout work git rebase master
git mergetool git rebase --continue
O git mergetool abre uma ferramenta visual para merging (facilita muito a vida). O git rebase –continue fala para continuar o rebase.
git checkout master git merge work git push origin master
O comando git merge work aplica seus commits no master. O git push envia para o servidor remoto. Novamente, na primeira vez que você tentar isso, o git ainda não sabe o que nem para onde você quer mandar. Por isso você precisa informar.
É um pouco mais trabalhoso que o svn, mas os ganhos são significativos. Vale a pena usar git direito. Eu não volto mais pro svn.
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.