<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mauricio de Amorim &#187; Git</title>
	<atom:link href="http://mauriciodeamorim.com.br/tag/git/feed/" rel="self" type="application/rss+xml" />
	<link>http://mauriciodeamorim.com.br</link>
	<description>Tecnologia e desenvolvimento web</description>
	<lastBuildDate>Tue, 21 Feb 2012 22:09:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Git &#8211; Removendo tags do repositório</title>
		<link>http://mauriciodeamorim.com.br/2010/08/09/git-removendo-tags-do-repositorio/</link>
		<comments>http://mauriciodeamorim.com.br/2010/08/09/git-removendo-tags-do-repositorio/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 10:44:39 +0000</pubDate>
		<dc:creator>Mauricio de Amorim</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>

		<guid isPermaLink="false">http://mauriciodeamorim.com.br/?p=725</guid>
		<description><![CDATA[Uma forma de criar uma marcação no Git seja para documentar uma modificação importante ou para marcar uma versão é usar o comando “tag”. Caso você se depare com o problema de remover uma tag criada acidentalmente no repositório fica aqui a dica de como corrigir. Imaginando que após alguns commits queremos criar uma tag [...]]]></description>
			<content:encoded><![CDATA[<p>Uma forma de criar uma marcação no Git seja para documentar uma modificação importante ou para marcar uma versão é usar o comando “tag”. Caso você se depare com o problema de remover uma tag criada acidentalmente no repositório fica aqui a dica de como corrigir.</p>
<p>Imaginando que após alguns commits  queremos criar uma tag fariamos isto:</p>
<pre style="background-color: black; color: white">
<span style="color: yellow">git tag -a beta0.1 -m “Primeira versão beta”</span>
</pre>
<p>Continuamos trabalhando e após mais alguns commits fazemos novamente:</p>
<pre style="background-color: black; color: white">
git add . &#038; git commit -am “Incluindo arquivo README”
<span style="color: yellow">git tag -a beta1.0 -m “Mais uma versão beta” </span>
git push origin master
<span style="color: yellow">git push --tags</span>
Counting objects: 6, done.
...
To git@github.com:mauriciodeamorim/testes_com_tags.git
 * [new tag]     	<span style="color: green">beta0.1 -> beta0.1</span>
 * [new tag]     	<span style="color: red">beta1.0 -> beta1.0</span>
</pre>
<p>Aqui cometemos o erro de criar outra tag numa sequência diferente da inicial e enviamos ao repositório.</p>
<p>Olhando nossa árvore no Gitk temos:</p>
<p style="padding: 20px;">
<img src="http://mauriciodeamorim.com.br/wp-content/uploads/2010/08/gitk_tags_wrong.png" alt="" title="gitk_tags_wrong" width="424" height="65" class="aligncenter size-full wp-image-729" /><br />
</span></p>
<p>Em nosso repositório no GitHub ficou assim:</p>
<p style="padding: 20px;">
<img src="http://mauriciodeamorim.com.br/wp-content/uploads/2010/08/github_two_tags.png" alt="" title="github_two_tags" width="360" height="92" class="aligncenter size-full wp-image-727" /><br />
</span></p>
<p>Então vamos considerar que a tag válida é a primeira “beta0.1” , então apagaremos a tag beta1.0 do repositório e depois localmente.</p>
<pre style="background-color: black; color: white">
git push origin :beta1.0
git tag -d beta1.0
</pre>
<p>Agora olhando tanto para o GitK quanto para o repositório temos tudo em ordem novamente.</p>
<p style="padding: 20px;">
<img src="http://mauriciodeamorim.com.br/wp-content/uploads/2010/08/gitk_tags_ok.png" alt="" title="gitk_tags_ok" width="428" height="65" class="aligncenter size-full wp-image-728" />
</p>
<p style="padding: 20px;">
<img src="http://mauriciodeamorim.com.br/wp-content/uploads/2010/08/github_one_tag_b.png" alt="" title="github_one_tag_b" width="360" height="92" class="aligncenter size-full wp-image-726" />
</p>
<p><b>Outros comandos</p>
<table border="1" cellpadding="3" cellspacing="0">
<tr>
<td>Envia uma tag de cada vez ao repositório</td>
<td>git push origin beta0.1</td>
</tr>
<tr>
<td>Envia todas as tags ao repositório</td>
<td>git push  &#8211; - tags</td>
</tr>
<tr>
<td>Envia commits e tags de uma só vez ao repositório</td>
<td>git push origin master  &#8211; - tags</td>
</tr>
<tr>
<td>Lista as tags existentes</td>
<td>git tag</td>
</tr>
<tr>
<td>Descreve a tag e quantos commits temos após ela</td>
<td>git describe</td>
</tr>
<tr>
<td>Mostra a tag e commit detalhadamente</td>
<td>git show beta0.1</td>
</tr>
<tr>
<td>Mostra a tag detalhadamente</td>
<td>git tag -v beta0.1</td>
</tr>
</table>
<p><b>Referências:</b><br />
<a href="http://gitready.com" target="_blank">Git Ready</a><br />
<a href="http://help.github.com/remotes/" target="_blank">Github &#8211; Working with remotes</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mauriciodeamorim.com.br/2010/08/09/git-removendo-tags-do-repositorio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Manipulando branches remotos com Git</title>
		<link>http://mauriciodeamorim.com.br/2010/07/12/manipulando-branches-remotos-git/</link>
		<comments>http://mauriciodeamorim.com.br/2010/07/12/manipulando-branches-remotos-git/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 04:51:14 +0000</pubDate>
		<dc:creator>Mauricio de Amorim</dc:creator>
				<category><![CDATA[Dicas rápidas]]></category>
		<category><![CDATA[branch]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>

		<guid isPermaLink="false">http://mauriciodeamorim.com.br/?p=707</guid>
		<description><![CDATA[Reorganizando meus projetos no Github me deparei com o problema de ter criado muitos branches locais e remotos e tudo estava uma grande bagunça. Os comandos que me ajudaram a resolver isto foram: Dado os branches locais macos-snow ~/project (master) git branch * master fix_counter rails3-version Para criá-los remotamente use macos-snow ~/project (master) git push [...]]]></description>
			<content:encoded><![CDATA[<p>Reorganizando meus projetos no <a href="http://github.com" target="_blank">Github</a> me deparei com o problema de ter criado muitos branches locais e remotos e tudo estava uma grande bagunça. Os comandos que me ajudaram a resolver isto foram:</p>
<p>Dado os branches locais </p>
<pre style="background-color: black; color: white">
macos-snow <span style="color: green">~/project</span><span style="color:red"> (master)</span> git branch
* master
  fix_counter
  rails3-version
</pre>
<p>Para criá-los remotamente use</p>
<pre style="background-color: black; color: white">
macos-snow <span style="color: green">~/project</span><span style="color:red"> (master)</span> git push --all
</pre>
<p>Ou para um branch específico</p>
<pre style="background-color: black; color: white">
macos-snow <span style="color: green">~/project</span><span style="color:red"> (master)</span> git push origin rails3-version
</pre>
<p>Para apagar branches locais</p>
<pre style="background-color: black; color: white">
macos-snow <span style="color: green">~/project</span><span style="color:red"> (master)</span> git branch -D rails3-version
</pre>
<p>Para apagar branches remotos</p>
<pre style="background-color: black; color: white">
macos-snow <span style="color: green">~/project</span><span style="color:red"> (master)</span> git push origin :rails3-version
</pre>
<p>Renomear branches locais</p>
<pre style="background-color: black; color: white">
macos-snow <span style="color: green">~/project</span><span style="color:red"> (master)</span> git branch -m old_branch new_branch
</pre>
<p>As referências que encontrei para renomear branches remotos não me foram úteis por isso fiz da forma mais prática renomeando o branch local, enviando para repositório e apagando o branch remoto antigo.</p>
<p><b>Referências:</b><br />
- <a href="http://help.github.com/remotes/" target="_blank">Help Github</a><br />
- <a href="http://www.gitready.com" target="_blank">Git ready</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mauriciodeamorim.com.br/2010/07/12/manipulando-branches-remotos-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facilitando o trabalho com Git</title>
		<link>http://mauriciodeamorim.com.br/2010/03/08/facilitando-o-trabalho-com-git/</link>
		<comments>http://mauriciodeamorim.com.br/2010/03/08/facilitando-o-trabalho-com-git/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 04:28:30 +0000</pubDate>
		<dc:creator>Mauricio de Amorim</dc:creator>
				<category><![CDATA[Dicas rápidas]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Git]]></category>

		<guid isPermaLink="false">http://mauriciodeamorim.com.br/?p=628</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>No dia-a-dia utilizar recursos das ferramentas certas ajudam a agilizar nosso trabalho, tratando-se de controle de versões o <a href="http://learn.github.com/p/intro.html" target="_blank">Git </a>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.</p>
<p><strong>INSTAWEB</strong></p>
<p>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 &#8220;instaweb&#8221; que inicia um servidor local onde podemos navegar (<a href="http://127.0.0.1:1234/?p=.git;a=shortlog" target="_blank">http://127.0.0.1:1234/?p=.git;a=shortlog</a>) 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á &#8220;rodando&#8221;.</p>
<pre>
git instaweb --httpd webrick
git instaweb --httpd webrick --stop
</pre>
<p><strong>STASH</strong></p>
<p>O comando &#8220;stash&#8221; é ú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 <strong><em>git stash</em></strong>, atualizamos o projeto e aplicamos novamente nossas alterações com <strong><em>git stash apply</em></strong>. Exemplo:</p>
<pre>
git stash
git stash apply
</pre>
<p><strong>AMEND</strong></p>
<p>O comando &#8220;amend&#8221; é utilizado para corrigir ou re-editar a mensagem do último commit desde que ele não tenha sido enviado para o repositório. Exemplo:</p>
<pre>
git commit -m "Alguma mensagem errada"
git commit --amend -m "Correção da mensagem"
</pre>
<p><strong>GREP</strong></p>
<p>Com &#8220;grep&#8221; encontramos palavras dentro dos arquivos do projeto, combinado com -n é possível saber em qual linha a palavra ou o conjunto delas foi encontrado.</p>
<pre>
git grep -n "palavra ou frase procurada"
</pre>
<p><strong>RESET</strong></p>
<p>Reset pode ser utilizado basicamente para duas situações, uma delas é desfazer um commit mantendo as alterações realizadas no código com &#8220;&#8211;soft&#8221; e para desfazer um commit completamente incluindo as alterações com &#8220;&#8211;hard&#8221;. Exemplo:</p>
<pre>
git reset --soft HEAD~1
git reset --hard HEAD~1
</pre>
<p><strong>LOG</strong></p>
<p>Temos diversas formas para verificar os logs de commits do projeto, abaixo alguns tipos de formatações para exibí-los. O último &#8220;shortlog&#8221; mostra a quantidade de commits do projeto.</p>
<pre>
git log --pretty=oneline --graph --all
git log --pretty=oneline --abbrev-commit
git whatchanged -n 1
git shortlog -s -n
</pre>
<p>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.</p>
<pre style="color: black; background: white; padding-left: 10px;">
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\] "
</pre>
<p>O  terminal ficará assim:</p>
<pre style="color: white; background: black; padding-left: 10px;">
user <span style="color:green">~/projects/blog</span> <span style="color:red"> (master) </span>$
</pre>
<p><strong>Referências:</strong><br />
<a href="http://gitready.com/" target="_blank">http://gitready.com/</a><br />
<a href="http://book.git-scm.com/" target="_blank">http://book.git-scm.com/</a><br />
<a href="http://learn.github.com/p/intro.html" target="_blank">http://learn.github.com/p/intro.html</a><br />
<a href="http://book.git-scm.com/4_tracking_branches.html" target="_blank">http://book.git-scm.com/4_tracking_branches.html</a><br />
<a href="http://cheat.errtheblog.com/s/git" target="_blank">http://cheat.errtheblog.com/s/git</a><br />
<a href="http://book.git-scm.com/4_ignoring_files.html" target="_blank">http://book.git-scm.com/4_ignoring_files.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mauriciodeamorim.com.br/2010/03/08/facilitando-o-trabalho-com-git/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Criando um repositório no Github</title>
		<link>http://mauriciodeamorim.com.br/2009/10/03/criando-um-repositorio-no-github/</link>
		<comments>http://mauriciodeamorim.com.br/2009/10/03/criando-um-repositorio-no-github/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 12:30:09 +0000</pubDate>
		<dc:creator>Mauricio de Amorim</dc:creator>
				<category><![CDATA[Dicas rápidas]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://mauriciodeamorim.com.br/blog/?p=7</guid>
		<description><![CDATA[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 &#8220;SSH Public Key&#8221;. Veja aqui como configurar em outros sistemas. cat ~/.ssh/id_dsa.pub Se ainda não tem a chave, crie [...]]]></description>
			<content:encoded><![CDATA[<p>Vou descrever aqui o caminho mais curto para colocar seu projeto em um repositório remoto usando o Github.</p>
<p>Crie uma conta no <a href="https://github.com/signup/free" target="_blank">Github</a>.</p>
<p>Adicionei sua chave SSH (Linux) copiando o resultado do comando abaixo no campo &#8220;SSH Public Key&#8221;. Veja <a href="http://github.com/guides/providing-your-ssh-key" target="_blank">aqui</a> como configurar em outros sistemas.</p>
<pre>cat ~/.ssh/id_dsa.pub</pre>
<p>Se ainda não tem a chave, crie e proceda como no item anterior.</p>
<pre>cd  ~/.ssh
ssh-keygen -t rsa -C "seu_email@email.com"
(enter)
(enter)
</pre>
<p>Crie um repositório em <a href="https://github.com/repositories/new" target="_blank">Your Repositories </a> que chamaremos de &#8220;primeiro_projeto&#8221;<br />
Na máquina local,  crie uma pasta chamada primeiro_projeto,  inicie um projeto com o Git e crie um arquivo qualquer para teste:</p>
<pre>mkdir primeiro_projeto
cd primeiro_projeto
git init-db
touch arquivo_qualquer.txt
git add .
git commit -a -m "Primeiro registro de alterações."
</pre>
<p>Vincule o projeto ao repositório no Github digitando:</p>
<pre><code>git remote add origin git@github.com:sua_conta_no_github/primeiro_projeto.git</code></pre>
<p>Envie os arquivos da sua máquina para o repositório:</p>
<pre><code>git push origin master</code></pre>
<p>Confira se o seu repositório foi atualilzado acessando http://github.com/sua_conta_no_github/primeiro_projeto</p>
<p><strong>Referências:</strong><br />
- <a href="http://help.github.com/" target="_blank">help.github.</a></p>
<p><strong>Assuntos relacionados:</strong><br />
- <a href="http://mauriciodeamorim.com.br/2009/01/06/como-usar-git-no-windows/" target="_blank">Como usar o Git no Windows</a><br />
- <a href="http://mauriciodeamorim.com.br/2009/01/09/criando-branches-no-git/" target="_blank">Criando branches no Git</a><br />
- <a href="http://mauriciodeamorim.com.br/2009/07/13/criando-atalhos-no-git/" target="_blank">Criando atalhos no Git</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mauriciodeamorim.com.br/2009/10/03/criando-um-repositorio-no-github/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Criando atalhos no Git</title>
		<link>http://mauriciodeamorim.com.br/2009/07/13/criando-atalhos-no-git/</link>
		<comments>http://mauriciodeamorim.com.br/2009/07/13/criando-atalhos-no-git/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 02:04:22 +0000</pubDate>
		<dc:creator>Mauricio de Amorim</dc:creator>
				<category><![CDATA[Configuração]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://mauriciodeamorim.com.br/?p=233</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p><em>Atualizado em 29/09/2009</em></p>
<p><img class="alignleft" src="http://mauriciodeamorim.com.br/wp-content/uploads/2009/07/git.jpg" alt="" width="111" height="111" /><br />
Depois de algum tempo usando o <a title="Git-scm.com" href="http://git-scm.com/" target="_blank">Git</a> sentimos a necessidade de automatizar algumas tarefas repetitivas, então a partir do momento temos <a title="Akita on Rails" href="http://www.akitaonrails.com/2009/07/05/dicas-de-git" target="_blank">consciência do que estamos fazendo</a>, podemos criar alguns atalhos de comandos para agilizar o trabalho. Os exemplos abaixo funcionam tanto para quem usa Linux como para Windows.</p>
<p>Dentro do seu branch de trabalho utilize o comando:</p>
<pre>git config alias.st status</pre>
<p>Caso o comando tenha mais que uma palavra coloque entre aspas.</p>
<pre>git config alias.lg "log --name-only"</pre>
<p>A estrutura acima é a seguinte:</p>
<p><strong>git config</strong> &#8211; Comando modificador, onde podemos informar também &#8211; -system (para todo sistema) ou &#8211; -global (para o usuário atual);<br />
<strong>alias</strong> &#8211; Chave do bloco que será alterado;<br />
<strong>.st</strong> e <strong>.lg</strong>- Nome do seu atalho;<br />
<strong>status</strong> e <strong>log &#8211;name-only</strong>- O comando git para onde seu atalho irá apontar.</p>
<p>Então ao digitar <em>&#8220;git st&#8221;</em> obteremos o resultado abaixo:</p>
<pre>$ 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)</pre>
<p>Para ficar mais rápido, podemos alterar os arquivos de configuração acrescentando os atalhos diretamente ao bloco [alias].</p>
<p><strong>No Windows</strong> os arquivos podem ser encontrados nestes caminhos:</p>
<p><strong>1 </strong>- C:\Pasta_do_seu_projeto\.git\config<br />
<strong>2</strong> &#8211; C:\Documents and Settings\Seu_usuario\.gitconfig<br />
<strong>3</strong> &#8211; C:\Arquivos de programas\Git\etc\gitconfig<br />
<strong><br />
No Mac:</strong><br />
<strong>1 </strong>- /Pasta_do_seu_projeto/.git/config<br />
<strong>2</strong> &#8211; /Users/Seu_usuario/.gitconfig<br />
<strong>3</strong> &#8211; /usr/local/git/etc/gitconfig<br />
Obs: Os arquivos de configuração do Git não tem extensão.</p>
<p><strong>No Linux:</strong><br />
Crie um arquivo como <em><strong>sudo</strong></em> na pasta<strong> etc/</strong> com nome de<strong> gitconfig</strong> e coloque os atalhos como informado abaixo.</p>
<p>Onde a configuração será aplicada na seguinte hierarquia:<br />
<strong>1</strong> &#8211; Apenas ao projeto.<br />
<strong>2</strong> &#8211; Para todos os projetos do usuário.<br />
<strong>3</strong> &#8211; Para todo sistema independente de usuário.</p>
<p>Eu particularmente adotei atalhos que achei mais intuitivos, cada um pode escolher o que melhor lhe convier.</p>
<pre>[alias]
  st = status
  cm = commit
  bh = branch
  ck = checkout
  lg = log -p
  lg1 = log --name-only</pre>
<p>Também podemos utilizar atalhos mais sofisticados como:</p>
<pre>[alias]
  cmm = commit -a -m
  rbmt = rebase master
  mgwk = merge working
  pullom = pull origin master
  pushom = push origin master
  mt = !git checkout master &amp;&amp; git status
  wk = !git checkout working &amp;&amp; git status
  inicia = !git checkout -b working</pre>
<p>Desde que entendamos o que está se fazendo, não há limites para criar estes atalhos.</p>
]]></content:encoded>
			<wfw:commentRss>http://mauriciodeamorim.com.br/2009/07/13/criando-atalhos-no-git/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

