Git запись в журнале отображается дважды, но с другим идентификатором фиксации - PullRequest
3 голосов
/ 06 марта 2020

My git log, как показано ниже.

3c61cc9 Commit A
dcf34cd Commit B
821cfe8 Commit A
7a5a58f Commit C
0987a57 Commit D
12721a1 Commit B

Здесь A & B каждый появляется дважды с различным идентификатором фиксации, также git diff 3c61cc9 821cfe8 идентичен, никакой разницы между каждой фиксацией. Так есть ли способ удалить эти дубликаты?

1 Ответ

0 голосов
/ 07 марта 2020

Если вам нравится, как выглядят ваши 3c61cc9 и 821cfe8, просто сделайте

git reset 821cfe8

Тогда эти два верхних коммита будут "удалены". и у вас будет ACDB в вашей истории.

НО, если вы хотите, чтобы ваша история была ABCD, удалив 821cfe8 и 12721a1 (в зависимости от того, как вы попали в текущее состояние независимо от того, запустили ли вы все эти коммиты и правила совместной работы ваших команд), вы можете попытаться перестроить свою историю следующим образом:

  1. извлеките самый последний коммит, который вас волнует - что бы ни было до 12721a1
  2. cherry выбирает каждый новый коммит, который вы хотите добавить
  3. сбросить ветку, чтобы указать новый "последний" коммит

Например:

$ git checkout <commit right before 12721a1> 
$ git cherry-pick 0987a57 # (commit D)
$ git cherry-pick 7a5a58f # (commit C)
$ git cherry-pick dcf34cd # (commit B)
$ git cherry-pick 3c61cc9 # (commit A)
$ git checkout <branch>
$ get reset <commit you switched to 2 steps ago>

Примечание: ничего из этого технически не "удаляет" коммиты, а просто удаляет их из истории этой ветки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...