2012-01-03 2 views
3

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

+0

Являются ли эти коммиты, что другие люди выбирают/тянут? Другими словами, это общий репозиторий или просто развертывание, которое вы только используете? – wadesworld

+0

@wadesworld для обоих ответов ниже, это плохая идея, даже если это не общий репозиторий. Это плохая привычка, и если я когда-нибудь подумаю, что мне нужно это сделать, я бы поставил под сомнение мои предпосылки, которые привели меня к такому выводу. – tjarratt

+0

интересный. моя проблема не общая? люди просто кусают пулю и сохраняют множественные коммиты? – dougvk

ответ

5

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

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

+0

конечно! сделать ветку. Derp. благодаря! – dougvk

+0

Что произойдет, если кто-то потянет, и я нажму другую историю? –

0

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

Как правило, не переустанавливайте после того, как вы что-то нажали.

2

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

+0

Это так плохо? –

+1

Это не так уж плохо, но это мешает вам сотрудничать с людьми в одном репозитории. – tjarratt

4

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

git push --force heroku master 

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

Смежные вопросы