Uso de git - redefinir

O comando git reset é usado para reverter a versão e você pode especificar a versão para reverter para um determinado commit.
Existem três métodos de comando

git reset [--soft | --mixed | --hard] [HEAD]

Pré-requisito de conhecimento: três importantes áreas de trabalho do git:

  1. Espaço de trabalho (diretório de trabalho): o diretório onde o código é escrito. É o diretório onde o código do projeto está armazenado (o diretório antes do git add).
  2. Área de teste (índice/estágio): a zona de buffer entre o espaço de trabalho e a biblioteca de versões. Use git add para adicionar o arquivo. Na verdade, é para adicionar a modificação do arquivo à área de armazenamento temporário e verificar o registro de status do git.
  3. Área do armazém: git commit submetido à filial local, veja o registro git log

–mixed é o padrão, você não precisa trazer este parâmetro

  1. Usado para redefinir arquivos na área de teste. Neste momento, o registro do histórico é consistente com o último commit (commit) e o conteúdo do arquivo do espaço de trabalho permanece inalterado (com o conteúdo da última modificação). Mova o ponteiro HEAD e altere o conteúdo da área de armazenamento temporário, mas a área de trabalho não será alterada.
  2. Alterações no conteúdo do arquivo original: O conteúdo modificado ainda está lá e não é adicionado.
  3. Mudanças na estrutura de diretórios (adicionando ou excluindo arquivos):
    Novos arquivos: Ainda existem, não foram adicionados (os arquivos na estrutura de diretórios ficam vermelhos, você precisa executar o comando git add. Em seguida, execute git commit) Excluir
    arquivos: No diretório estrutura Ainda não, você pode executar diretamente o git commit

–soft é usado para reverter para uma determinada versão

  1. Apenas mover o ponteiro principal atual não alterará o conteúdo da área de trabalho e da área de armazenamento temporário.
  2. Mudanças no conteúdo do arquivo original: o conteúdo modificado ainda está lá e é adicionado (não confirmado)
  3. Mudanças na estrutura de diretórios (adicionando ou excluindo arquivos):
    Novos arquivos: ainda existem e são adicionados (os arquivos na estrutura de diretórios ficam verdes, você pode executar git commit novamente);
    excluindo arquivos: ainda não há arquivos na estrutura de diretórios , você pode executar diretamente o git commit

O parâmetro –hard desfaz todas as modificações não confirmadas no espaço de trabalho.

  1. Retorne a área de preparação e a área de trabalho para a versão anterior, exclua todos os envios de informações anteriores e altere o conteúdo do ponteiro HEAD, da área de trabalho e da área de preparação atuais.
  2. Alterações no conteúdo do arquivo original: o conteúdo modificado é perdido (o código modificado não será adicionado)
  3. Mudanças na estrutura de diretórios (adicionar ou excluir arquivos): os arquivos recém-adicionados são perdidos e os arquivos excluídos equivalem a não serem excluídos.

cenas a serem usadas

-misturado

1 Depois de usar reset --mixed, execute git add para adicionar o conteúdo alterado do arquivo à área de armazenamento temporário (índice) e, em seguida, execute git commit para enviar o conteúdo da área de armazenamento temporário do índice ao warehouse (repositório), assim Ele pode obter o efeito de mesclar nós de commit
2. Também pode ser usado para encontrar erros de adição. Você pode executar git reset HEAD para redefinir os arquivos na área de armazenamento temporário (índice).

-macio

1 Depois de usar reset --soft, o conteúdo enviado após commit_id será colocado na área de armazenamento temporário (índice). Neste momento, ele foi adicionado. Você pode executar diretamente o commit e enviar os envios após commit_id como um commit. Reduza registros de log desnecessários

-duro

1 Use git reset --hard HEAD (HEAD também pode ser um commit_id) para restaurar à força o conteúdo e o status da pasta gerenciada pelo git; neste momento, todos os commits após o nó de destino (commit_id) serão excluídos

 git log // 查询要回滚的 commit_id
 // 这里的commit_id是当前提交错误的想要撤回的commit之前的那个正确的commit
 // 执行前,先将本地代码切换到对应分支
 git reset --hard commit_id // HEAD 就会指向这个commit_id的提交记录
 git push origin HEAD --force // 强制推送到远端

Há um problema com esta operação. Embora o código no servidor tenha sido restaurado, se várias pessoas desenvolverem nesta ramificação, sua versão local ainda será superior à versão no servidor, então outros irão reenviar (push) Em termos de código , a operação que você desfaz será refeita e a operação acima será em vão. A solução é pedir a outros que excluam a ramificação local primeiro e, em seguida, extraiam a ramificação do servidor novamente, ou se você enviar todo o código local e a outra parte não modificar o código novamente, então você o envia e descobre que você enviou-o. Se houver um problema, execute a operação de redefinição novamente e peça à outra parte para extrair o código mais recente. Está tudo bem. O mais importante é que a outra parte não tenha o código que você deseja redefinir localmente . 2. Recuperação de exclusão acidental. Se você descobrir que o commit_id errado foi copiado após reverter o
código
. , ou se um registro de commit for excluído acidentalmente, ele também poderá ser restaurado por meio do seguinte código:

git relog // 复制要恢复操作的前面的 hash 值
git reset --hard hash // 将 hash 换成要恢复的历史记录的 hash 值

おすすめ

転載: blog.csdn.net/wh13821662259/article/details/126909225