Удалить коммит, созданный путем изменения имени на другой коммит - PullRequest
1 голос
/ 02 мая 2019

Я работал с GitKraken, когда пытался изменить имя коммита, который я только что создал. Я думал, что это просто изменит имя, но вместо этого он создал еще один коммит. Я не знаю, что я тогда сделал, но у меня следующая ситуация:

enter image description here

Я бы хотел убрать эти два коммита справа: «Детектор - сходство Tf-idf» и «WIP на мастере: Авто ...», чтобы у меня был только один столбец с остальными 4 коммитами. Голова находится на последнем коммите, который я хочу отобразить на графике, «Добавлено сходство tf-idf».

Можно ли полностью удалить эти коммиты из проекта?

EDIT:

Если я использую опцию 'reverse commit' в GitKraken, это решит проблему или только усугубит ситуацию?

Ответы [ 2 ]

1 голос
/ 02 мая 2019

Ваша проблема здесь в том, что на вашем «старом» есть тайник, то есть, перед переименованием коммита: строка WIP on master: Auto stash before.... Читайте о сундуке здесь . Если вы удалите тайник, старый коммит исчезнет. Вы должны, конечно, проверить, сохраняются ли сохраненные изменения до того, как вы удалите их. Git автоматически сохраняет незафиксированные изменения в определенных точках, как в вашем случае до возврата.

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

В этой ситуации возврат не требуется. Как говорит @TimBiegeleisen, вы, конечно, не должны изменять коммиты, которые публикуются каким-либо образом, но переименование локального коммита, как вы сделали здесь, вполне нормально и не является поводом для беспокойства.

Обратите внимание, что только то, что коммит "исчезает" из графа коммитов GitKrakens, не означает, что он будет удален полностью; он недоступен только из ваших текущих веток HEAD s. Коммиты будут задерживаться на некоторое время дольше, что часто очень полезно, если сбрасывается или происходит сбой.

1 голос
/ 02 мая 2019

В общем, использование git revert для отмены одного или нескольких коммитов является предпочтительным способом.Основная причина этого заключается в том, что после публикации ветки может оказаться разрушительным фактическое удаление более ранней фиксации.Команда git revert, скорее, создает новый коммит поверх ветви, который функционально отменяет некоторые более ранние коммиты.Его можно рассматривать как зеркальное отображение некоторых предыдущих коммитов.

В Gitkraken вы можете отменить коммит, щелкнув правой кнопкой мыши узел фиксации и выбрав Revert commit.См. документацию для получения дополнительной информации.

...