Как изменять сообщение commit в особенности?

Хотело изменить сообщение commit в особенности, что со следующей командой я могу изменять сообщение последнего выполненного commit:

git commit --amend -m "your new message"

Но как я могу изменять сообщение третьего с конца выполненного commit? Возможно?

15
задан 17.12.2015, 19:32
3 ответа

Ты можешь использовать git rebase чтобы идти к старому commit. Например, если у тебя есть эти commits:

HEAD
Commit1  aac723ab
Commit2  cdc213ff
Commit3  aff521cd

и ты хочешь изменить Commit 2 ты сделал бы следующее:

git rebase --interactive cdc213ff^

В редакторе, который выйдет (default), помести edit, r или reword вместо pick в линии commit, которую ты хочешь изменить.

Нечто похожее:

Раньше:

pick cdc213ff Mensaje del commit que deseas modificar

После:

reword cdc213ff Mensaje del commit que deseas modificar

Твои изменения (если бы ты имел) и потом ты делаешь новый commit:

git commit --all --amend -m "Tu nuevo mensaje"

И после этого:

git rebase --continue

Чтобы возвращаться в тебя HEAD предыдущий.

Предосторожность:

Это не является рекомендуемым в публичных хранилищах ввиду того, что, если есть программисты, которые основали Ваши изменения на последующих commits, у них будет вид кода призрака и вызовет много путаницы. Но в твоем случае, если ты только изменишь сообщение, тогда нет много проблемы. Ты можешь видеть эти рекомендации здесь.

8
ответ дан 24.11.2019, 15:05

Которое tenés, что делать один rebase интерактивный (-i) используя команду reword того же самого.

Сначала ejecutá git rebase -i <hash-del-commit>~1 чтобы просить делать rebase интерактивный настоящей ветви начиная с предыдущего commit (~1) в того, который ты queriendo изменять. В это выстрелишь ты $EDITOR со списком всех commits, которые существуют с этого до верха твоей ветви, показывая pick, hash и сообщение каждого. Немного как:

pick abcdef0 Mensaje del commit más nuevo
pick bcdef01 Mensaje del commit anterior
...
pick fde2152 Mensaje del commit a editar

Cambiá pick из-за r или reword в линии commit, которую нужно издавать. Нечто похожее:

pick abcdef0 Mensaje del commit más nuevo
pick bcdef01 Mensaje del commit anterior
...
r fde2152 Mensaje del commit a editar

Guardá файл и я вышел из редактора, и git будешь возвращаться до этого commit и стрелять $EDITOR снова, но этот раз с сообщением commit там присутствующий. Немного как:

Mensaje del commit a editar

Este mensaje es el que habías escrito en el primer
git commit, y que ahora querés reemplazar por uno nuevo

Editá сообщение для того, чтобы он остался, как querés, grabá файл, я вышел из редактора, и git он применит все commits, которых не было для того, чтобы твоя ветвь осталась равной, кроме из-за того, что имел обновленное сообщение.

Не забывай, что ты изменяешь историю твоего хранилища, из-за которого, если ты напечатал commit, в который ты издаешь сообщение, или любого из Ваших преемников podés производить конфликты в оставшуюся часть твоей команды.

5
ответ дан 24.11.2019, 15:05

Это подразумевает повторно писать историю. Ты должен иметь в виду, что ПРОТИВОПОКАЗАНО повторно писать историю commits, которые уже находятся в одном remote.

Осветленный это, ты можешь повторно писать историю и следовательно, менять сообщение commit используя команду git-rebase со следующим синтаксисом:

git rebase $COMMITID~1 

Тогда git открой редактор с контентом, сходным со следующим:

pick af65427 foo
pick 1d4ba60 bar
pick 9679424 baz
pick 4ac4adc bax

На этот редактор ты меняешь слово pick на слово reword

pick af65427 foo
reword 1d4ba60 bar
pick 9679424 baz
pick 4ac4adc bax

Позже, Git откроет редактор, в котором ты можешь захватывать новое сообщение твоего commit.

barbarbar

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Author:    asdfasdf <jhon.doe@doe.com>
# Date:      Wed Nov 18 11:45:44 2015 -0600
#
# interactive rebase in progress; onto 1b90076
# Last commands done (2 commands done):
#    pick af65427 actualizacion shells para produccion
#    reword 1d4ba60 acualizacion shell extract_correct_invalid_account
# Next commands to do (2 remaining commands):
#    pick 9679424 correccion test, dado que usuario es requerido
#    pick 4ac4adc validacion cuando viene MXP en movimientos de cuenta
# You are currently editing a commit while rebasing branch 'develop' on '1b90076'.
#
# Changes to be committed:
#   modified:   xxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xx
#
# Untracked files:
#   xxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxx/xxx.log
#   xxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxx/foo.txt

Как только ты закрыл редактор, git он повторно напишет commits, следующие за reword и обновит ссылку твоего Настоящего branch

Привет

4
ответ дан 24.11.2019, 15:05

Теги

Похожие вопросы