seg
mar 8th

Facilitando o trabalho com Git ...

No dia-a-dia utilizar recursos das ferramentas certas ajudam a agilizar nosso trabalho, tratando-se de controle de versões o Git tem diversos truques interessantes. Vou resumir de forma rápida alguns comandos que utilizo diariamente, a idéia é concentrar aqui novas dicas que forem aparecendo, então sugestões são bem vindas.

INSTAWEB

Um dos comandos mais úteis e interessantes que tenho utilizado ultimamente para fazer revisão de código ou para ter um histórico do projeto é o “instaweb” que inicia um servidor local onde podemos navegar (http://127.0.0.1:1234/?p=.git;a=shortlog) pelos commits e verificar as diferenças do repositório de uma forma bem simples e clara. É importante lembrar que ao subir o serviço o terminal fica liberado sendo necessário parar o servidor após utilizar senão o processo continuará “rodando”.

git instaweb --httpd webrick
git instaweb --httpd webrick --stop

STASH

O comando “stash” é útil quando estamos trabalhando em algum código que ainda não está concluído e precisamos atualizar o projeto com as últmas atualizações, então colocamos nossas alterações em área isolada com git stash, atualizamos o projeto e aplicamos novamente nossas alterações com git stash apply. Exemplo:

git stash
git stash apply

AMEND

O comando “amend” é utilizado para corrirgir ou re-editar a mensagem do último commit desde que ele não tenha sido enviado para o repositório. Exemplo:

git commit -m "Alguma mensagem errada"
git commit --amend -m "Correção da mensagem"

GREP

Com “grep” encontramos palavras dentro dos arquivos do projeto, combinado com -n é possível saber em qual linha a palavra ou o conjunto delas foi encontrado.

git grep -n "palavra ou frase procurada"

RESET

Reset pode ser utilizado basicamente para duas situações, uma delas é desfazer um commit mantendo as alterações realizadas no código com “–soft” e para desfazer um commit completamente incluindo as alterações com “–hard”. Exemplo:

git reset --soft HEAD~1
git reset --hard HEAD~1

LOG

Temos diversas formas para verificar os logs de commits do projeto, abaixo alguns tipos de formatações para exibí-los. O último “shortlog” mostra a quantidade de commits do projeto.

git log --pretty=oneline --graph --all
git log --pretty=oneline --abbrev-commit
git whatchanged -n 1
git shortlog -s -n

Para complementar, uma dica para mostrar o branch atual no terminal. No arquivo ~/.bashrc no Ubuntu ou ~/.bash_profile no MacOS inclua as linhas abaixo, feche o terminal e abra novamente para que as alterações sejam aplicadas.

export PS1="\[\033[38m\]\u\[\033[32m\] \w \[\033[31m\]\`ruby -e
\"print (%x{git branch 2> /dev/null}.grep(/^\*/).first ||
'').gsub(/^\* (.+)$/, '(\1) ')\"\`\[\033[37m\]$\[\033[00m\] "

O terminal ficará assim:

user ~/projects/blog  (master) $

Referências:
http://gitready.com/
http://book.git-scm.com/
http://learn.github.com/p/intro.html
http://book.git-scm.com/4_tracking_branches.html
http://cheat.errtheblog.com/s/git
http://book.git-scm.com/4_ignoring_files.html

sáb
out 3rd

Criando um repositório no Github ...

Vou descrever aqui o caminho mais curto para colocar seu projeto em um repositório remoto usando o Github.

Crie uma conta no Github.

Adicionei sua chave SSH (Linux) copiando o resultado do comando abaixo no campo “SSH Public Key”. Veja aqui como configurar em outros sistemas.

cat ~/.ssh/id_dsa.pub

Se ainda não tem a chave, crie e proceda como no item anterior.

cd  ~/.ssh
ssh-keygen -t rsa -C "seu_email@email.com"
(enter)
(enter)

Crie um repositório em Your Repositories que chamaremos de “primeiro_projeto”
Na máquina local,  crie uma pasta chamada primeiro_projeto, inicie um projeto com o Git e crie um arquivo qualquer para teste:

mkdir primeiro_projeto
cd primeiro_projeto
git init-db
touch arquivo_qualquer.txt
git add .
git commit -a -m "Primeiro registro de alterações."

Vincule o projeto ao repositório no Github digitando:

git remote add origin git@github.com:sua_conta_no_github/primeiro_projeto.git

Envie os arquivos da sua máquina para o repositório:

git push origin master

Confira se o seu repositório foi atualilzado acessando http://github.com/sua_conta_no_github/primeiro_projeto

Referências:
- help.github.

Assuntos relacionados:
- Como usar o Git no Windows
- Criando branches no Git
- Criando atalhos no Git

seg
jul 13th

Criando atalhos no Git ...

Atualizado em 29/09/2009


Depois de algum tempo usando o Git sentimos a necessidade de automatizar algumas tarefas repetitivas, então a partir do momento temos consciência do que estamos fazendo, podemos criar alguns atalhos de comandos para agilizar o trabalho. Os exemplos abaixo funcionam tanto para quem usa Linux como para Windows.

Dentro do seu branch de trabalho utilize o comando:

git config alias.st status

Caso o comando tenha mais que uma palavra coloque entre aspas.

git config alias.lg "log --name-only"

A estrutura acima é a seguinte:

git config – Comando modificador, onde podemos informar também – -system (para todo sistema) ou – -global (para o usuário atual);
alias – Chave do bloco que será alterado;
.st e .lg- Nome do seu atalho;
status e log –name-only- O comando git para onde seu atalho irá apontar.

Então ao digitar “git st” obteremos o resultado abaixo:

$ git st
# On branch working
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#       README
nothing added to commit but untracked files present (use "git add" to track)

Para ficar mais rápido, podemos alterar os arquivos de configuração acrescentando os atalhos diretamente ao bloco [alias].

No Windows os arquivos podem ser encontrados nestes caminhos:

1 - C:\Pasta_do_seu_projeto\.git\config
2 – C:\Documents and Settings\Seu_usuario\.gitconfig
3 – C:\Arquivos de programas\Git\etc\gitconfig

No Mac:

1 - /Pasta_do_seu_projeto/.git/config
2 – /Users/Seu_usuario/.gitconfig
3 – /usr/local/git/etc/gitconfig
Obs: Os arquivos de configuração do Git não tem extensão.

No Linux:
Crie um arquivo como sudo na pasta etc/ com nome de gitconfig e coloque os atalhos como informado abaixo.

Onde a configuração será aplicada na seguinte hierarquia:
1 – Apenas ao projeto.
2 – Para todos os projetos do usuário.
3 – Para todo sistema independente de usuário.

Eu particularmente adotei atalhos que achei mais intuitivos, cada um pode escolher o que melhor lhe convier.

[alias]
  st = status
  cm = commit
  bh = branch
  ck = checkout
  lg = log -p
  lg1 = log --name-only

Também podemos utilizar atalhos mais sofisticados como:

[alias]
  cmm = commit -a -m
  rbmt = rebase master
  mgwk = merge working
  pullom = pull origin master
  pushom = push origin master
  mt = !git checkout master && git status
  wk = !git checkout working && git status
  inicia = !git checkout -b working

Desde que entendamos o que está se fazendo, não há limites para criar estes atalhos.