Como edito uma mensagem de commit incorreta com TortoiseGit?

Respostas:

160

Se o commit for o chefe do branch atual, isso é fácil.

  1. Menu de contexto -> Git Commit
  2. Marque a caixa de seleção "Alterar o último compromisso"
  3. Corrija sua mensagem de confirmação
  4. Está bem

Se o commit for o chefe de outro branch, mude para aquele branch primeiro.

  1. Menu de contexto -> TortoiseGit -> Switch / Checkout
  2. Escolha o nome da filial
  3. Está bem
  4. Siga as etapas 1-4 acima para alterar a mensagem de confirmação

Se o commit está no meio, sem qualquer fusão entre o head, você precisa reiniciar, corrigir e selecionar

  1. Menu de contexto -> TortoiseGit -> Log
  2. Selecione o commit -> menu de contexto -> Reset
  3. Hard Reset ( isso irá descartar todo o trabalho contido nos commits acima do commit selecionado, bem como quaisquer alterações não confirmadas no diretório de trabalho )
  4. Está bem
  5. Siga as etapas 1-4 acima para alterar a mensagem de confirmação
  6. Selecione do cabeçalho até um commit acima dele -> Menu de contexto -> Seleção automática
  7. Continuar
linquize
fonte
12
Eu realmente sinto falta da "Editar mensagem de log" do TortoiseSVN. Alguma chance de eles adicionarem esse recurso?
Benoit Blanchon
3
Estou perdido no passo 6, o que você quer dizer com "Selecionar do cabeçalho para um commit acima dele" é uma opção no menu de contexto?
Flethuseo
1
perdido na etapa 6 também. nenhuma opção de escolha certa em qualquer lugar, e eu não consigo ver o commit acima em nenhum caso (apenas diz mudanças de diretório de trabalho, das quais na verdade não há nenhuma)
Robert Ivanc
13
Votar negativamente porque acho que as sugestões no caso em que o commit está no meio me fizeram descartar minhas alterações de código até aquele commit, que é várias semanas de trabalho.
Samuel
8
AVISO: Use "Criar branch nesta versão" para definir um nome de branch temporário antes de redefinir para o commit que você deseja modificar. Caso contrário, você corre o risco de perder todos os commits acima deste ponto. (Se isso já aconteceu com você, git reflogirá ajudá-lo a recuperá-los).
Steve Pitchers
19

Para o caso de quando o commit está no meio, eu recomendo fortemente não seguir as instruções fornecidas pela linquize, veja os comentários abaixo de sua resposta para o motivo.

  1. Você pode usar a linha de comando git com TortoiseGit e não causará nenhum problema: Posso usar ferramentas Git de linha de comando e TortoiseGit simultaneamente? .

  2. Este vídeo do youtube explica muito bem: http://youtu.be/4YjKY0u9Z6I . Basicamente, use git rebase -i e simplesmente "reformule" a mensagem de confirmação.

Update: Eu acredito que você pode recuperar os commits perdidos do hard reset sugerido por linquize, veja a resposta de Wayne aqui: Como posso reordenar / combinar commits usando rebase Git? .

Samuel
fonte
7
Acordado. git está me levando muito tempo para aprender como usar, o SVN era tão simples. O conceito de git é simples, mas seu uso não é.
Samuel
TortoiseGit também oferece rebase interativo, você não precisa usar a linha de comando para isso.
Peter
13

Eu diria que o melhor método para alterar qualquer mensagem de confirmação é usar a force rebaseopção em tortoisegit.

Veja esta resposta em Como reordenar commits (rebase) com TortoiseGit . O mesmo método pode ser usado para editar mensagens de confirmação.

  • Quando você estiver na caixa de diálogo de rebase, clique com o botão direito do mouse no commit que deseja editar e selecione a Editopção. Você pode escolher editar vários commits.
  • Clique no Start Rebase botão.
  • O rebase irá pausar nos commits que você marcou Edit
  • Clique em Commit Message guia na parte inferior e edite a mensagem
  • Clique no Amendbotão para continuar
geoji
fonte