Commit parcial no Git

Sabe quando você quer fazer o commit de apenas parte de um arquivo?
Usando o parâmetro -i o git irá executar o add no modelo interativo.

No exemplo irei usar o arquivo vimrc.

git add <vimrc> -i

Como resposta ele irá apresentar os comandos disponíveis:

           staged     unstaged path
  1:    unchanged       +15/-4 vimrc

*** Commands ***
  1: status	  2: update	  3: revert	  4: add untracked
  5: patch	  6: diff	  7: quit	  8: help
What now>

Escolhendo o comando 5, ele irá perguntar qual arquivo você quer adicionar, parcialmente, no stage.

           staged     unstaged path
  1:    unchanged       +15/-4 vimrc
Patch update>>

Selecione o arquivo que você irá adicionar, no stage, informando o número do arquivo. No caso, só tenho um arquivo para adicionar.
Selecionado o arquivo o git apresenta a primeira diferença do arquivo e pergunta o que fazer com ela.

diff --git a/vimrc b/vimrc
index 5199dfd..aa2b489 100644
--- a/vimrc
+++ b/vimrc
@@ -17,15 +17,16 @@ Bundle 'scrooloose/nerdcommenter.git'
 Bundle 'scrooloose/nerdtree.git'
 Bundle 'kien/ctrlp.vim'
 Bundle 'tpope/vim-endwise.git'
-Bundle 'claco/jasmine.vim.git'
-Bundle 'groenewege/vim-less'
+"Bundle 'claco/jasmine.vim.git'
+"Bundle 'groenewege/vim-less'
 Bundle 'tpope/vim-ragtag.git'
-Bundle 'tpope/vim-rails.git'
 Bundle 'vim-ruby/vim-ruby.git'
+Bundle 'tpope/vim-rails.git'
+"Bundle 'm2ym/rsense'
 "Bundle 'tpope/vim-pathogen.git'
+"Bundle 'm2ym/rsense'
 " ==========================================
 
-
 filetype on           " Enable filetype detection
 filetype plugin on    " Enable filetype-specific plugins
 filetype indent on    " Enable filetype-specific indenting
Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?

Para:
– n: ignorar esta diferença e ir para a próxima e vai para a próxima diferença
– y: adiciona a diferença no stage e vai para a próxima diferença
– q: termina a interação com esse arquivo

Ao final das diferenças no arquivo ele volta para o estado inicial do add. Use 7 para sair.

Feito isso, se você não tiver adicionado todas as diferenças no stage, o git status irá informar que o arquivo vimrc está no stage e está modificado.

Pronto!

Agora temos apenas parte do arquivo adicionado no stage, usando o commit interativo do git.

Fonte: http://git-scm.com/book/en/Git-Tools-Interactive-Staging

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s