Date: prev next · Thread: first prev next last


Marcos, acho que posso ajudar com isso, veja bem.. Fiz alguns testes num
repositório local e cheguei as seguintes conclusões..


Com 1 commit a frente do master (enviado 1 patch):
$ git reset --soft HEAD~1
$ git reset HEAD

Isso desfaz seu commit e te deixa com as alterações pendentes, te dando a
chance de alterar novamente e refazer o patch como se não tivesse chegado a
dar 'commit' no patch enviado.
Após esses dois comandos, você pode ou desfazer sua alteração (git stash)
ou corrigir e gerar um novo patch.

Com 2 commits a frente do master (enviado 2 patchs):
A diferença é que você pode voltar apenas o último commit ou os dois que
estão afrente.
- Voltar apenas o último:
$ git reset --soft HEAD~1
$ git reset HEAD
- Voltar os dois que estão pendente de entrar para o master (por falta de
aprovação)
$ git reset --soft HEAD~2
$ git reset HEAD

E então, novamente, decidir o que fazer, voltar (stash) ou refazer e
commitar novamente.

Com 3 commits a frente a lógica é a mesma, você pode voltar o último, os
dois últimos, ou os 3 últimos.

Pelos meus testes, parece que nao dá para voltar apenas 1 de 2, a não ser
que o 1 seja o último, e a mesma lógica para 2 ou mais. Se o seu branch
está 3 commits a frente do master, você pode voltar 1 (o que foi enviado
por último), 2 (os dois últimos), ou 3 (os três últimos), nunca o primeiro
dos três, ou os dois primeiros dos três.


Obs1: Caso você (e o revisor que está te ajudando) decidam usar o git
reset, seu patch que foi enviado errado precisa ser cancelado, se o revisor
não cancelar, diga pra ele cancelar (mas provavelmente ele vai). Pois seu
novo patch vai conter o patch antigo + as correções.
Obs2: Fiz poucos testes, posso estar errado em relação a alguma coisa. Se
verem erros, me corrijam por favor.
Obs3: Desculpem se fui repetitivo ou se a explicação ficou "muito para
iniciantes", mas já vai poder ficar nos registros da lista dev pt-br.


Abs,

Ricardo.

2012/10/1 Olivier Hallot <olivier.hallot@libreoffice.org>

Oi

Controle de versão é quase uma ciência. Uma excelente oportunidade para
um especialista falar de git no HackDay de LibreOffice que faremos no
SOLISC.


Em 01-10-2012 14:53, Marcos Souza escreveu:
Olá pessoal,

Estou começando a mandar patches com o gerrit e me surgiu algumas
duvidas:

Fantástico.


Por exemplo, fiz uma alteração, commitei, dei um logerrit submit.
Fix outra alteração, commitei, e dei outroi submit.

Como posso alterar o primeiro patch?

bem, aguarde o commit(inserção) dele no master(mestre), atualize e faça
outro patch(retalho) de correção.

Se o primeiro patch(retalho) for rejeitado, talvez você tenha de usar o
comando "rebase" ou "reset --hard" para realinhar com o repositório remoto.


E ainda, pelo o que vi e que conversei com o pessoal(Ricardo e Vanz),
somente podemos dar commit no branch master.

Você pode pedir os privilégios, mas branches(ramos) são feitos para
acomodar mudanças pesadas, que não podem ser comitadas(inseridas) aos
poucos sem quebrar o build(montagem) do master(mestre).

Patches(retalhos) de refatoração, muitas vezes com mudanças repetitivas,
ficam melhores se forem submetidas em lotes de 5 a 10 arquivos, para não
cansar o revisor.


Caso eu de um submit e necessite drop o patch, o gerrit pode remover o
patch das revisões e remoevr o patch do meu HEAD?

rebase ou reset --hard.


Desde já agradeço!

OBS: Desculpe se estas perguntas são de iniciante, mas eu estava
acostumado com o format-patch!

A problemática é a mesma. Tanto faz pelo logerrit ou format-patch, o
fato é que o commit(inserção) fez seu código local ficar desalinhado com
o remoto.



--
Olivier Hallot
Comunidade LibreOffice

--
Você está recebendo e-mails da lista dev@pt-br.libreoffice.org
# Informações sobre os comandos disponíveis (em inglês):
  mande e-mail vazio para dev+help@pt-br.libreoffice.org
# Cancelar sua assinatura: mande e-mail vazio para:
  dev+unsubscribe@pt-br.libreoffice.org
# Arquivo de mensagens: http://listarchives.libreoffice.org/pt-br/dev




-- 
Ricardo Montania Prado de Campos
http://www.linuxafundo.com.br

-- 
Você está recebendo e-mails da lista dev@pt-br.libreoffice.org
# Informações sobre os comandos disponíveis (em inglês):
  mande e-mail vazio para dev+help@pt-br.libreoffice.org
# Cancelar sua assinatura: mande e-mail vazio para:
  dev+unsubscribe@pt-br.libreoffice.org
# Arquivo de mensagens: http://listarchives.libreoffice.org/pt-br/dev

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.