Как удалить несколько средних коммитов в gitlab? - PullRequest
0 голосов
/ 18 февраля 2020

Мне нужна помощь в git / gitlab. Я получил gitlab с тестовым репо, например, 6 коммитов: A-> B -> C -> D-> E-> F Коммит A - первый, а F - последний. Как я могу это сделать: удалить коммиты B, C, D, E? Я хочу иметь только первый и последний "A-> F Я делаю это, потому что мой репо весит много. Какие команды мне нужно ввести?

Ответы [ 3 ]

1 голос
/ 18 февраля 2020
  1. Начните интерактивную перебазировку, выбирая коммит достаточно рано, чтобы сделать его до того, как вы хотите удалить коммит, например A.

    git rebase -i <hash-A>
    
  2. A Откроется файл со списком коммитов до A с инструкцией по выбору всех коммитов.

    В открывшемся файле удалите строки коммитов, которые вы хотите удалить.

  3. Сохраните и закройте файл.

    Перезапуск начнется автоматически и применит ваши необходимые изменения.

  4. Pu sh ваши изменения, которые потребуют Сила пу sh из-за переписывания истории.

    git push -f
    
1 голос
/ 18 февраля 2020

Как правило, вы хотели бы использовать интерактивную перебазировку, как подсказывает другой ответ.

Если вы знакомы с тем, как работает перебазировка, вы также можете сделать что-то вроде:

git rebase rev-of-E rev-of-F --onto rev-of-A

Например, если ваш HEAD на F, вы можете сделать

git rebase HEAD~ HEAD --onto HEAD~5
1 голос
/ 18 февраля 2020

Предполагая, что вы находитесь на ветке master в данный момент и что никто не работает над этим репо:

git checkout <hash-A>
git cherry-pick <hash-F>
git branch -f master
git checkout master

Тогда, если вы довольны результатами, вы можете:

git push -f origin master

Помните, что вы навсегда потеряете все изменения, внесенные в коммитах B в E.

...