Вот шаги для редактирования сообщения коммита предыдущего коммита ( который не является самым последним коммитом ) с использованием SourceTree для Windows версии 1.5.2.0 :
Шаг 1
Выберите коммит непосредственно перед коммитом, который вы хотите отредактировать. Например, если я хочу отредактировать коммит с сообщением "FOOBAR!" тогда мне нужно выбрать коммит, который идет прямо перед ним:
Шаг 2
Щелкните правой кнопкой мыши на выбранном коммите и нажмите Rebase children...interactively
:
Шаг 3
Выберите коммит, который вы хотите редактировать, затем нажмите Edit Message
внизу. В этом случае я выбираю коммит с сообщением «FOOBAR!»:
Шаг 4
Отредактируйте сообщение о коммите и нажмите OK
. В моем примере я добавил "SHAZBOT! SKADOOSH!"
Шаг 5
Когда вы вернетесь в интерактивное окно перебазирования, нажмите, OK
чтобы завершить перебазирование:
Шаг 6
На этом этапе вам необходимо принудительно нажать новые изменения, поскольку вы отменили коммиты, которые вы уже выдвинули. Однако текущая версия SourceTree для Windows 1.5.2.0 не позволяет принудительно проталкивать GUI, поэтому вам все равно придется использовать Git из командной строки, чтобы сделать это.
Нажмите Terminal
в графическом интерфейсе, чтобы открыть терминал.
Шаг 7
Из терминала принудительно нажмите следующую команду:
git push origin <branch> -f
где <branch>
имя ветви, которую вы хотите нажать, и -f
означает принудительное нажатие. Принудительное нажатие перезапишет ваши коммиты на вашем удаленном репо, но это нормально в вашем случае, так как вы сказали, что не делитесь своим репо с другими людьми.
Это оно! Вы сделали!
На версии 1.9.6.1. Для UnPressed commit.
источник
Если сообщение с комментарием содержит неанглийские символы, используя метод, предоставленный user456814, эти символы будут заменены знаками вопроса. (протестировано под исходным деревом Ver2.5.5.0)
Поэтому я должен использовать следующий метод.
ВНИМАНИЕ : если фиксация была получена другими участниками, изменения, приведенные ниже, могут стать причиной хаоса для них.
Шаг 1 : В главном окне исходного дерева перейдите на вкладку репо и нажмите кнопку « терминал », чтобы открыть командную консоль git.
Шаг 2 :
[Ситуация A] : целевой коммит - самый последний.
1) В командной консоли git введите
2) Если целевой коммит был перенесен на удаленный, вы должны снова нажать принудительно. В командной консоли git введите
[Ситуация B] : целевой коммит не самый последний.
1) В командной консоли git введите
Это раздавить последние русские коммиты. например, если вы хотите отредактировать сообщение до последнего, n равно 2. Эта команда откроет окно vi, первое слово каждой строки будет « pick », и вы измените «pick» на « reword » для строки Вы хотите редактировать. Затем введите,
:wq
чтобы сохранить и выйти из этого окна vi. Теперь откроется новое окно vi, в котором вы вводите новое сообщение. Также используйте,:wq
чтобы сохранить & выйти.2) Если целевой коммит был перенесен на удаленный, вы должны снова нажать принудительно. В командной консоли git введите
Наконец : в главном окне исходного дерева нажмите,
F5
чтобы обновить.источник
Обновить
Примечание: этот ответ изначально был написан в отношении более старых версий SourceTree для Windows, и в настоящее время устарел.
Смотрите мой новый ответ для текущей версии SourceTree для Windows, 1.5.2.0 . Я оставляю этот ответ в исторических целях.
Оригинальный ответ
Что касается графических интерфейсов Git, нет, они не охватывают все функции Git . Они даже близко не подходят . Я предлагаю вам проверить один из ответов в разделе Как отредактировать неверное сообщение о коммите в Git? Git достаточно гибок, что есть несколько решений ... из командной строки.
На самом деле SourceTree может поставляться с оболочкой msysgit bash или может использовать стандартную командную оболочку Windows. В любом случае, вы открываете его из SourceTree, нажимая кнопку «Терминал»:
Вы устанавливаете, какой терминал SourceTree использует (bash или Windows) здесь:
Один из способов решения проблемы в SourceTree
При этом, вот один способ, которым вы можете сделать это в SourceTree. Так как вы упомянули в комментариях, что вы не возражаете против «возврата к ошибочному коммиту» (под которым я предполагаю, что вы на самом деле имеете в виду сброс, что является другой операцией в Git), то вот шаги:
Reset current branch to this commit
, и выбрав опцию полного сброса из выпадающего списка.Что касается этого комментария :
Значит ли это, что вы единственный человек, работающий в репо? Это важно, потому что нетрудно изменить историю репо (например, путем внесения изменений в коммит), не создавая проблем для ваших соавторов. Тем не менее, если предположить, что вы являетесь единственным человеком, работающим с репо, то следующее, что вы хотели бы сделать, это принудительно перенести вашу измененную историю на удаленный сервер.
Имейте в виду, однако, что, поскольку вы сделали полный сброс к ошибочному коммиту, то принудительное нажатие заставляет вас потерять всю работу, выполненную ранее. Если это нормально, то вам может потребоваться использовать следующую команду в командной строке для принудительного нажатия, потому что я не смог найти вариант сделать это в SourceTree:
Это также предполагает, что BitBucket позволит вам принудительно сделать толчок к репо.
В любом случае вы должны действительно научиться использовать Git из командной строки, это сделает вас более опытным в Git. #ProTip, используйте msysgit и включите режим быстрого редактирования в свойствах терминала, чтобы вы могли дважды щелкнуть, чтобы выделить строку текста, щелкнуть правой кнопкой мыши, чтобы скопировать, и снова щелкнуть правой кнопкой мыши, чтобы вставить. Это довольно быстро.
источник