2015-12-05 3 views
-1

Кто-то нажал 3 коммита, которые я хочу удалить, но я имею в виду, что я не хочу видеть их в истории фиксации в Github, потому что у них неправильное имя. Как это сделать?Github - Как вернуть кого-то?

+0

Есть ли они в отдельной ветке? Если это так, просто удалите ветку на пульте дистанционного управления, верните локальные коммиты и завершите все снова. – GolezTrol

+0

Существует только главная ветка. – ThirdMartian

+0

Первый результат для [git revert pushed commit] (http://christoph.ruegg.name/blog/git-howto-revert-a-commit-already-pushed-to-a-remote-reposit.html). – GolezTrol

ответ

1

Предполагая, что три коммитов являются тремя последними фиксациями, первое, что будет полезно, это сумма родительского фиксации, к которой вы хотите вернуться. Например: 6b1d1ca. Вы можете найти это в правой колонке своей истории фиксации в GitHub.

Далее, вы хотите сбросить ваш мерзавец дерево, что совершать с помощью

git reset --hard 6b1d1ca 

Поскольку вы удаляете коммиты из истории, вам нужно будет заставить толчок к GitHub, что может быть сделано путем добавления опция --force.

git push --force 

Будьте осторожны при использовании опции --force, если вы нажимали фиксаций, так как они, безусловно, будут перезаписаны.

0

Это зависит от текущего состояния вашего репозитория.

Если те три последних коммита, и вы действительно «не хотят, чтобы их увидеть», вы могли бы сбросить на коммит, который расположен непосредственно перед этими тремя:

мерзавца сброса --hard ГОЛОВУ ~ 3

А потом толчок используя --force.

В общем, если вы хотите вернуться коммит, вы должны использовать мерзавца вернуться. Например:

мерзавец вернуться мерзавец вернуться ГОЛОВЫ ~ < 2> .. ГОЛОВУ

Это позволит создать коммит, который удаляет изменения из последних трех коммитов.

+0

Этого недостаточно, если изменения уже нажаты. – GolezTrol

+1

Не возврат, а сброс и нажатие с использованием силы заставят эти фиксации исчезнуть. Я только добавил объяснение о том, что означает возврат, потому что я думал, что это может быть полезно. К сожалению, мне кажется, нам нужно знать немного больше о том, как выглядит репозиторий прямо сейчас для более конкретного решения. –

0

Вы можете команду rebase удалить или изменить сообщения коммитов.

  • тип git rebase -i HEAD~4. Опция -i имеет номер interactive rebasing.

  • Ваш текстовый редактор откроется с последними . 4 Committ перечислены. Каждая фиксация будет иметь слово pick перед этим.

    • Удалите строки для фиксаций, которые вы хотите удалить. Это скажет rebase, что вы не хотите сохранять эти фиксации в истории.

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

  • Теперь мерзавец должен сделать «перебазироваться» вашей истории в соответствии с параметрами, которые вы выбрали в файле, который открыт, то есть удалить коммиты вы не хотите.

Если вы хотите изменить совершающее сообщений, измените pick на reword перед каждой фиксацией вы хотите отредактировать и сохранить файл.

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