17. Removendo um commit de um branch

Metas

  • Para aprender a deletar os commits mais recentes do branch

Revert é um comando poderoso da seção anterior que permite cancelar quaisquer commits para o repositório. No entanto, tanto os commits originais quanto os cancelados são vistos no histórico do branch (ao usar o comando git log).

Muitas vezes, depois que um commit é feito, percebemos que foi um erro. Seria bom ter um comando desfazer que permite que os commits incorretos sejam imediatamente excluídos. Este comando evitaria o aparecimento de um ou mais commits indesejados no histórico git log.

01 O comando reset

Já usamos o comando reset para combinar a zona de buffer e o commit selecionado (o commit HEAD foi usado na lição anterior).

Quando uma referência de confirmação é fornecida (ou seja, um branch, hash ou nome de tag), o reset irá …

  1. Sobrescrever o branch atual para que aponte para o commit correto
  2. Opcionalmente, redefinirá a zona de buffer para que esteja em conformidade com o commit especificado
  3. Opcionalmente, redefina o diretório de trabalho para que corresponda ao commit especificado

02 Verifique nosso histórico

Vamos fazer uma verificação rápida de nosso histórico de commits .

Executar:

git hist

Resultado:

Vemos que os dois últimos commits neste branch são “Ops “e” Reverter Ops “. Vamos removê-los com o comando reset.

03 Marque este branch primeiro

Vamos marcar o último commit com tag, so you can find it after removing a commit(s).

Executar:

git tag oops

04 Redefinir o commit para Ops anterior

Em No log de histórico acima, o commit marcado como “v1” está antes dos commits “Oops” e “Reverter Oops”. Vamos redefinir a ramificação até esse ponto. Como o branch tem uma tag, podemos usar o nome da tag no comando reset (se não tiver uma tag, podemos usar o valor hash).

Executar:

git reset --hard v1git hist

Resultado:

Nosso branch master está apontando para o commit v1 e os commits “Reverter Oops” e “Oops” não existem mais no branch. O parâmetro --hard faz com que o diretório de trabalho reflita o novo cabeçalho do branch.

05 Nada nunca se perde

O que aconteceu com os commits errados? Eles ainda estão no repositório. Na verdade, ainda podemos nos referir a eles. No início da lição, criamos a tag “oops” para o commit cancelado. Vamos dar uma olhada em todos os commits.

Executar:

git hist --all

Resultado:

Podemos ver que os commits errados não sumiram. Eles não estão mais listados no branch master, mas ainda permanecem no repositório. Eles ainda estariam no repositório se não os marcássemos, mas poderíamos referenciá-los apenas por seus nomes hash. Os commits não referenciados permanecem no repositório até que o software de coleta de lixo seja executado pelo sistema.

06 Perigos de reinicialização

Reinicializações em branches locais geralmente são inofensivas. As consequências de qualquer “acidente” podem ser revertidas usando o commit apropriado.

No entanto, outros usuários que compartilham o branch podem ser confundidos se o branch for compartilhado em repositórios remotos.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *