Удаление старых коммитов, но сохранение последних коммитов - PullRequest
0 голосов
/ 13 апреля 2020

Довольно давно go Я создал ветку на основе ветки коллег и начал вносить некоторые изменения. Теперь, после внесения некоторых изменений в течение недели, оказалось, что с начала прошлой недели есть некоторые коммиты, которые мы хотим удалить, но мы хотим сохранить некоторые из последних коммитов.

Например, если История коммитов выглядела так:

0123456 commit-information
6543210 commit-information
1029384 commit-information
1234567 commit-information

Где 0123456 - самый старый коммит, а 1234567 - самый последний коммит. Есть ли способ удалить первые два коммита, но сохранить последние два коммита?

Редактировать: первые два коммита и два последних коммита не зависят друг от друга.

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Несколько вариантов:

  1. Оставьте старые коммиты в своей истории и просто «удалите» содержимое

    git revert <sha1> <sha2>
    
  2. «захватить» желаемые 2 коммита в вашу ветку назначения

    # "Apply" the required changes to your branch
    git cherry-pick <SHA1->
    

enter image description here

0 голосов
/ 14 апреля 2020

Третий вариант - использовать git rebase , чтобы сохранить количество коммитов из ветви

Общий формат c такой команды:

git rebase -p --onto <SHA_First_commit_to_remove>^ <SHA_First_commit_to_keep>^ <branch>

Предполагая, что ваша ветвь называется «mybranch», а SHA в OP команда становится:

git rebase -p --onto 0123456^ 1029384^ mybranch
...