Отредактируйте сообщение фиксации в SourceTree Windows (уже нажата на удаленный)

Как изменить неверное сообщение фиксации в SourceTree, не касаясь командной строки?

Дополнительная информация:

  • Это не последняя фиксация.
  • Все уже было перенесено в Битбукет.
  • Это частный репозиторий, и я являюсь единственным сотрудником.
  • Я не против потерять какие-либо из предыдущих коммитов, так как я могу повторно передать их в любое время.
  • Я не хочу, однако, терять какую-либо модификацию кода, когда-либо сделанное.

Результат:

  • Как кажется невозможным на данный момент в соответствии с вашими комментариями и ответами, я собираюсь создать новый репозиторий и начать все заново. Спасибо всем за вашу помощь!

Ответ 1

Ниже приведены шаги для редактирования сообщения фиксации предыдущего фиксации (, который не последняя фиксация) с помощью SourceTree для Windows версии 1.5.2.0:

Шаг 1

Выберите фиксацию непосредственно перед фиксацией, которую вы хотите отредактировать. Например, если я хочу отредактировать фиксацию с сообщением "FOOBAR!" тогда мне нужно для выбора комманды, которая поступает прямо перед ней:

Selecting commit before the one that I want to edit.

Шаг 2

Щелкните правой кнопкой мыши выбранную фиксацию и нажмите Rebase children...interactively:

Selecting "Rebase children interactively".

Шаг 3

Выберите фиксацию, которую вы хотите отредактировать, затем нажмите Edit Message на дно. В этом случае я выбираю коммит с сообщением "FOOBAR!":

Select the commit that you want to edit.

Шаг 4

Отредактируйте сообщение фиксации и нажмите OK. В моем примере я добавил "ШАББОТ! СКАДООШ!"

Edit the commit message

Шаг 5

Когда вы вернетесь в окно интерактивной переадресации, нажмите OK, чтобы закончить перебазироваться:

Click OK to finish.

Шаг 6

На этом этапе вам придется принудительно нажимать новые изменения, так как вы переустановили что вы уже нажали. Однако текущая версия 1.5.2.0 SourceTree для Windows не позволяет принудительно проталкивать GUI, поэтому вам нужно будет использовать Git из командной строки, чтобы это сделать.

Нажмите Terminal из графического интерфейса, чтобы открыть терминал.

Click Terminal

Шаг 7

С помощью команды push-push с помощью следующей команды

git push origin <branch> -f

где <branch> - название ветки, которую вы хотите нажать, а -f означает чтобы заставить толчок. Сила push перезапишет ваши фиксации на вашем удаленное репо, но это нормально в вашем случае, поскольку вы сказали, что не используете ваше репо с другими людьми.

Что это! Все готово!

Ответ 2

В версии 1.9.6.1. Для UnPashed commit.

  • Нажмите на ранее зафиксированное описание
  • Щелкните значок фиксации
  • Введите новое сообщение о фиксации и выберите " Изменить последний коммит" в раскрывающемся списке "Параметры коммитов".
  • Зафиксируйте ваше сообщение.

Ответ 3

Update

Примечание: этот ответ был первоначально написан в отношении более старых версий SourceTree для Windows и теперь устарел.

Посмотрите мой новый ответ для текущей версии SourceTree для Windows, 1.5.2.0. Я оставляю этот ответ позади в исторических целях.

Оригинальный ответ

как я нахожусь на Windows У меня нет инструмента командной строки, и я не знаю, как его использовать: (Это единственный способ разобраться в этом? Графический интерфейс не охватывает все git функции? " Оригинальный плакат

Что касается git GUI, нет, они не охватывают все функции git. Они даже не приближаются. Я предлагаю вам проверить один из ответов в разделе Как изменить неверное сообщение фиксации в Git?, git достаточно гибко, чтобы было несколько решений... из командной строки.

SourceTree может на самом деле поставляться с оболочкой msysgit bash или может использовать стандартную командную оболочку Windows. В любом случае, вы откроете его в форме SourceTree, нажав кнопку Terminal:

enter image description here

Вы устанавливаете, какой терминал SourceTree использует (bash или Windows) здесь:

enter image description here

Один из способов решения проблемы в SourceTree

Как говорится, здесь один из способов сделать это в SourceTree. Поскольку вы упомянули в комментариях, что вы не возражаете "возвращаться к ошибочному фиксации" (по которому я предполагаю, что вы на самом деле означаете сброс, что является другой операцией в Git), то вот шаги:

  • Сделайте жесткий reset в SourceTree для плохого фиксации, щелкнув правой кнопкой мыши на нем и выбрав Reset current branch to this commit, и выбрав жесткий параметр reset в раскрывающемся списке. enter image description here
  • Нажмите кнопку "Зафиксировать", затем
  • Нажмите на флажок внизу, в котором говорится: "Изменить последнюю фиксацию". enter image description here
  • Внесите необходимые изменения в сообщение, а затем снова нажмите Commit. Вуаля!

Относительно этого комментария:

если это невозможно, потому что оно уже подтолкнуло Bitbucket, я бы не прочь создать новый репозиторий и начать с него.

Означает ли это, что вы единственный человек, работающий на репо? Это важно, потому что это не так, чтобы изменить историю репо (например, путем изменения фиксации), не создавая проблем для ваших сотрудников. Однако, полагая, что вы единственный человек, работающий над репо, то следующая вещь, которую вы хотели бы сделать, это принудительно направить вашу измененную историю на удаленный компьютер.

Помните, что из-за того, что вы сделали жесткий reset для ошибочного фиксации, затем принудительное нажатие приводит к тому, что вы потеряете всю работу, которая приходит после нее. Если это хорошо, тогда вам может понадобиться использовать следующую команду в командной строке, чтобы выполнить принудительное нажатие, потому что я не мог найти вариант сделать это в SourceTree:

git push remote-repo head -f

Это также предполагает, что BitBucket позволит вам принудительно нажать на репо.

Вы действительно должны научиться использовать git из командной строки в любом случае, но это сделает вас более опытными в Git. #ProTip, используйте msysgit и включите режим быстрого редактирования в свойствах терминала, чтобы вы могли дважды щелкнуть, чтобы выделить строку текста, щелкните правой кнопкой мыши, чтобы скопировать, и щелкните правой кнопкой мыши еще раз, чтобы вставить. Это довольно быстро.