Git - Удалить фиксацию из истории, но уменьшить код - PullRequest
1 голос
/ 19 июня 2020

Я использую git на VS2019

Мне было интересно, есть ли способ удалить старые коммиты, но всегда сохранять последний код. Причина в том, что когда я работаю над большим изменением, я делаю много коммитов после проверки каждого маленького шага, но в конце меня раздражает, когда я нажимаю на просмотр истории и мне нужно искать старый коммит, чтобы сравнить изменения. Я хотел бы удалить указанные c коммиты, но оставить изменения. Таким образом, я увижу в истории только основные вехи процесса развития. Есть способ сделать это ??

Ответы [ 3 ]

0 голосов
/ 19 июня 2020

Вы можете следовать рабочему процессу, подобному «Git лучше с исправлениями » из Атул Шарма

Для коммитов, которые постепенное улучшение для того же шага , используйте git commit --fixup small step, что позволяет «делать много коммитов после проверки каждого маленького шага».

(Вы можете увидеть это в Git Расширение в Visual Studio )

Но в конце вы можете очистить все эти небольшие шаги с помощью git rebase --interactive --autosquash <First step commit> (при условии, что вы еще не отправили эти коммиты)

Это Таким образом, вы получите более чистую историю.

0 голосов
/ 19 июня 2020

Похоже, что в этом сценарии ios вы разрабатываете новую функцию, и в этом случае вы должны использовать подход «ветвление + запрос на вытягивание» при разработке. Во время запроса на вытягивание вы можете выполнить слияние squa sh. Это не все в командной строке, но в любом случае это может быть к лучшему.

Если вы уже работаете с функциональной веткой, мне нравится подход Von C.

0 голосов
/ 19 июня 2020

Похоже, вам нужна функция git rebase.

Если вы знаете, сколько коммитов вы хотите сквотировать sh вместе, вы можете использовать

git rebase -i HEAD~N

Вы можете также делайте это в интерактивном режиме:

git rebase --interactive HEAD~N

Имейте в виду, что если вы объединяете коммиты, которые вы уже отправили, у вас могут возникнуть проблемы со следующим pu sh.

Подробнее, см .: https://www.internalpointers.com/post/squash-commits-into-one-git

...