Acabei de fazer um git pull --rebase origin master
e houve um conflito.
Em primeiro lugar, este conflito estava em um arquivo que eu não tinha tocado e estava a cerca de 10 commits de volta. Por que isso acontece?
Em seguida, digitei acidentalmente git rebase --skip
e 'pulei aquele patch'.
Preocupado por ter pulado um commit, verifiquei uma nova versão do branch master e fiz uma comparação entre o branch no qual fiz o rebase e o novo branch master. As únicas mudanças que aparecem no diff são o último commit, e olhando para o log, o patch que foi 'pulado', aparece no histórico de commits.
Alguém pode explicar o que está acontecendo aqui?
git rebase --skip
. Erradamente, talvez? :)Respostas:
Ele faz o que diz, ele pula um commit. Se você executar
rebase --abort
em um conflito posterior durante o mesmo rebase, o commit ignorado também será revertido, é claro.Se a sua mudança já existia no upstream, o Git não será capaz de aplicar o seu commit (mas geralmente deve pular automaticamente, se o patch for exatamente o mesmo). Seu próprio commit será ignorado, mas a alteração ainda existirá no HEAD atual, porque já foi aplicada no upstream.
Você realmente deve se certificar de que não removeu uma alteração importante sua;) (use o reflog para voltar ao estado anterior ao rebase)
fonte
--skip
seja o caminho a percorrer. Skip irá pular um commit completamente, descartando todas as mudanças feitas nele.git rebase
em copiar commits de um branch para outro. Então, quando você pula um commit, o conteúdo original do commit é pulado e o patch não é aplicado (então todas as mudanças feitas em qualquer arquivo não irão para seu branch de destino). A maneira mais fácil é configurar um repositório git simples com dois branches, vários commits em cada um deles e então tentar rebase e pular um commit (você pode usargit rebase --interactive
para especificar quais commits serão copiados (pick
) ou pulados (skip
)