Aqui estão as etapas para editar a mensagem de confirmação de uma confirmação anterior ( que não é a confirmação mais recente ) usando o SourceTree for Windows versão 1.5.2.0 :
Passo 1
Selecione a confirmação imediatamente antes da confirmação que você deseja editar. Por exemplo, se eu quiser editar o commit com a mensagem "FOOBAR!" então eu preciso selecionar o commit que vem logo antes:
Passo 2
Clique com o botão direito do mouse no commit selecionado e clique em Rebase children...interactively
:
etapa 3
Selecione o commit que você deseja editar e clique Edit Message
na parte inferior. Nesse caso, estou selecionando o commit com a mensagem "FOOBAR!":
Passo 4
Edite a mensagem de confirmação e clique em OK
. No meu exemplo, adicionei "SHAZBOT! SKADOOSH!"
Etapa 5
Quando você retornar à janela de rebase interativa, clique em OK
para finalizar a rebase:
Etapa 6
Nesse ponto, você precisará forçar o envio de suas novas alterações, desde que você tenha refazido as confirmações que já enviou. No entanto, a versão atual 1.5.2.0 do SourceTree for Windows não permite que você force a interface gráfica, portanto, você precisará usar o Git na linha de comando para fazer isso.
Clique Terminal
na GUI para abrir um terminal.
Etapa 7
No terminal force-push com o seguinte comando,
git push origin <branch> -f
onde <branch>
é o nome do ramo que você deseja enviar e -f
significa forçar o envio. O empurrão forçado substituirá suas confirmações em seu repo remoto, mas tudo bem no seu caso, pois você disse que não está compartilhando seu repo com outras pessoas.
É isso aí! Você Terminou!
Na versão 1.9.6.1. Para confirmação sem envio.
fonte
Se a mensagem de comentário incluir caracteres que não sejam do idioma inglês , usando o método fornecido pelo usuário456814, esses caracteres serão substituídos por pontos de interrogação. (testado no sourcetree Ver2.5.5.0)
Então eu tenho que usar o seguinte método.
CUIDADO : se a confirmação tiver sido solicitada por outros membros, as alterações abaixo podem causar caos.
Etapa 1 : Na janela principal do sourcetree, localize sua guia de recompra e clique no botão " terminal " para abrir o console de comando do git.
Etapa 2 :
[Situação A] : a confirmação do destino é a mais recente.
1) No console de comando git, insira
2) Se a confirmação do destino foi enviada para remoto, você deve enviar novamente à força. No console de comando git, insira
[Situação B] : a confirmação do destino não é a mais recente.
1) No console de comando git, insira
É para esmagar os últimos n commits. por exemplo, se você deseja editar a mensagem antes da última, n é 2. Este comando abrirá uma janela vi, a primeira palavra de cada linha será " pick " e você mudará "pick" para " reformular " a linha você quer editar. Em seguida, insira
:wq
para salvar e sair da janela vi. Agora, uma nova janela vi será aberta; nessa janela, você inserirá sua nova mensagem. Também use:wq
para salvar e sair.2) Se a confirmação do destino foi enviada para remoto, você deve enviar novamente à força. No console de comando git, insira
Finalmente : Na janela principal do sourcetree, pressione
F5
para atualizar.fonte
Atualizar
Nota: esta resposta foi originalmente escrita em relação às versões mais antigas do SourceTree for Windows e agora está desatualizada.
Veja minha nova resposta para a versão atual do SourceTree for Windows, 1.5.2.0 . Estou deixando esta resposta para trás para fins históricos.
Resposta original
Em relação às GUIs do Git, não, elas não cobrem todas as funções do Git .Eles nem chegam perto . Sugiro que você verifique uma das respostas em Como edito uma mensagem de confirmação incorreta no Git? , Git é flexível o suficiente para que haja várias soluções ... a partir da linha de comando.
O SourceTree pode já vir com o shell msysgit bash ou pode ser capaz de usar o shell de comando padrão do Windows. De qualquer forma, você o abre no SourceTree, clicando no botão Terminal:
Você define qual terminal o SourceTree usa (bash ou Windows) aqui:
Uma maneira de resolver o problema no SourceTree
Dito isto, aqui está uma maneira de fazer isso no SourceTree. Desde que você mencionou nos comentários que não se importa em "voltar ao commit defeituoso" (pelo qual eu suponho que você realmente quer dizer redefinir, que é uma operação diferente no Git), aqui estão as etapas:
Reset current branch to this commit
e selecionando a opção de suspensa.Em relação a este comentário :
Isso significa que você é a única pessoa que trabalha no repositório? Isso é importante porque não é trivial alterar o histórico de um repositório (como alterar um commit) sem causar problemas aos seus colaboradores. No entanto, supondo que você seja a única pessoa trabalhando no repositório, a próxima coisa que você gostaria de fazer é forçar o envio do histórico alterado para o controle remoto.
No entanto, esteja ciente de que, como você fez uma redefinição definitiva do comprometimento defeituoso, a força forçada faz com que você perca todo o trabalho que vem depois dele anteriormente. Se estiver tudo bem, talvez você precise usar o seguinte comando na linha de comando para fazer o push forçado, porque não consegui encontrar uma opção para fazer isso no SourceTree:
Isso também pressupõe que o BitBucket permitirá que você force o envio para um repositório.
Você realmente deve aprender a usar o Git a partir da linha de comando, de qualquer maneira, isso o tornará mais proficiente no Git. #ProTip, use msysgit e ative o modo Edição rápida nas propriedades do terminal, para que você possa clicar duas vezes para destacar uma linha de texto, clicar com o botão direito do mouse para copiar e clicar com o botão direito do mouse novamente para colar. É bem rápido.
fonte