Usando o git no dia a dia
No dia a dia o git é uma ferramenta super pratica para se usar, normalmente no processo de versionamento do codigo ira usar comandos como add, rm, commit, e push.
git log
Exibe a lista de todos os commits do seu projeto. Abaixo vemos um exemplo:
bash-3.1$ git log
commit chave_sha1
Author: luciano <luciano@id_usuário>
Date: Fri Nov 19 22:05:52 2010 +0000
mensagem que você digitou no commit
git-svn-id: repositório_git@id_usuário
.
.
.
commit chave_sha1
Author: luciano <luciano@id_usuário>
Date: Fri Nov 18 12:43:31 2010 +0000
mensagem de outro commit
git-svn-id: repositório_git@id_usuário
.
.
.
A Chave SHA1 nos será útil mais a frente.
git add
Como é de se imaginar, esse comando adiciona os arquivos em um repositório temporário para em breve ser comitado.
git rm
Já este comando remove os arquivos que foram adicionados
git commit
git commit -m “descrição do commit”
git commit -am “descrição do commit”
Removendo tracked files
Digamos que você criou seu projeto, commitou suas alterações e enviou para um repositório remoto e só então se lembrou de ignorar alguns arquivos... Bom, apartir de agora não adianta apanas fazer as modificações no .gitignore, você vai precisar também remover ele do seu índice, e ai então ele passará a ser ignorado nos seus commits. Então vamos lá:
* Primeiro você vai no seu arquivo .gitignore e coloca o seu arquivo lá.
* Depois você dá um git rm --cached <arquivo>
* Por exemplo:
* no seu .gitignore:
* log/development.log
* depois é só executar:
* git rm --cached log/development.log
Desfazendo commits
Caso você faça um commit e por algum motivo precise defazer, existe duas formas de fazer isso:
git reset --soft
A primeira forma é usando a flag 'soft', a qual irá retornar os últimos arquivos commitados para a área 'staging' (área onde os arquivos estão prontos para serem commitados). Para isso, basta utilizar o comando: $ git reset --soft HEAD~1
O valor 1 corresponde a quantidade de commits que você vai desfazer. Exemplo:
$ git reset --soft HEAD~1
ou
$ git reset --soft HEAD~2
etc.
Uma outra forma de utilizar o reset é especificando um commit. Você precisa digitar a chave_sha1 dele junto ao comando. Digite: $ git reset --soft chave_sha1
Segue um exemplo abaixo:
$ git reset --soft 448c28eb80d07248333739e4031cf24b6290261b
git reset --hard
A segunda forma é usando a flag 'hard' e a única diferença é que os arquivos não serão movidos para a área 'staging', eles serão simplesmente deletados, ou seja, você perde as alterações que havia feito. Exemplo: $ git reset --hard HEAD~1
Levando minhas modificações para outros branchs sem comitar
Você fez um monte de modificações e quando executou um 'git status', percebeu que não era aquele o branch certo. O git stash é seu o seu herói neste momento.
git stash save
O comando permite 'esconder' as modificações na pasta de trabalho, deixando-o limpo para a mudança de branchs, levando os arquivos para uma espécie de 'área de transferência': $ git stash save Saved working directory and index state WIP on my_work_branch: 83a438e... HEAD is now at 83a438e Un isolated Engines Test.
git stash list
É possível ter mais de uma area 'stash'. Para listá-las temos o comando 'git stash list'. Cada nova stash criada é adicionada ao início da lista: $ git stash list stash@{0}: WIP on my_work_branch: 83a438e...
git stash apply
E agora a parte mais importante desde o início, que é recuperar o que colocamos no stash. Para isso, precisamos ver na saída do 'git stash list' o ID do nosso stash. Repare no comando anterior o o ID 'stash@{0}' $ git stash apply stash@{0} Auto-merging my_file.rb CONFLICT (content): Merge conflict in my_file.rb
git stash drop
Devemos prezar um ambiente limpo. O 'git stash drop' faz isso por nós sempre que um stash não for mais necessário: $ git stash drop stash@{0}
Mais informações sobre o 'git stash': $ git stash --help