Как я перебираю git history после нескольких нажатий, а затем отправляю обновленную историю? - PullRequest
3 голосов
/ 04 января 2012

Часто я работаю с герою, и ближе к концу проекта у меня есть несколько небольших коммитов, чтобы исправить некоторые неожиданные ошибки. В результате получается 10 небольших коммитов различий, которые я хочу перебазировать в один. Проблема в том, что история уже сдвинута. Как мне примирить эти вещи?

Ответы [ 4 ]

6 голосов
/ 05 января 2012

То, что вы хотите сделать, далеко не так плохо, как то, что люди предлагают. Это правда, что вы не хотите перебазировать изменения, помещенные в общую ветку master, перебазирование изменений, отправленных в необщую / рабочую ветку или в необщее хранилище, очень распространено. Многие люди считают, что это ЛУЧШАЯ практика, чем загромождение истории проекта бессмысленными (и, возможно, неполными / нерабочими коммитами).

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

4 голосов
/ 04 января 2012

Если вы действительно хотите нажать перебазированную ветку (которую Git по умолчанию отклонит), вы можете использовать следующую команду:

git push --force heroku master

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

2 голосов
/ 04 января 2012

Вы не должны переписывать историю (rebase) после того, как вы уже нажали. Если кто-то еще вытянет из этого пульта, и вы перебазируете и нажмете, у вас будут ужасные ужасные конфликты слияния.

0 голосов
/ 04 января 2012

С git-rebase man-page: Перебазирование (или любая другая форма переписывания) ветки, на которой работают другие, является плохой идеей;любой, кто находится ниже по течению, вынужден вручную исправлять свою историю.

Так что, в общем случае, не делайте перебазирования после того, как вы что-то нажали.

...