Git Удалить нежелательные коммиты из запроса на извлечение - PullRequest
52 голосов
/ 20 января 2012

Я начал работать над проектом и сделал несколько нежелательных коммитов, которые я подтолкнул к оригинальному мастеру. Теперь, когда я пытаюсь выполнить запрос на удаление, Github хочет зафиксировать все предыдущие коммиты.

Мой вопрос: как мне удалить нежелательные коммиты и зафиксировать изменения, которые я хочу зафиксировать, чтобы я был в курсе master?

Ответы [ 2 ]

34 голосов
/ 24 января 2012

Я полагаю, что ваш источник - это ваш собственный форк какого-то проекта, который вы тоже хотите сделать по запросу?

Поскольку вы будете изменять историю (сбросив голову), вам нужно нажать на флаг --force. Найдите хэш вашего последнего хорошего коммита, используя git log.

Теперь запустите

git reset SHA

Это изменит вашу голову на этот ша и сохранит изменения в файлах, так как после последней удачной фиксации ваш индекс также будет сброшен.

Теперь вы можете изменить свой код и выполнять коммиты, которые хотите. Но вы должны сделать git push --force, так как вы изменили историю хранилища. Это означает, что любой, кто разветвляет ваш репозиторий, больше не сможет получать от вас изменения. Но вы сможете сделать пулл-запрос в свой апстрим.

0 голосов
/ 24 января 2013

Если вы используете git gui, зайдите в git gui и визуализируйте историю своей ветки.(перед выполнением следующего шага сделайте резервную копию локальных изменений, которые вы хотите перенести). Щелкните правой кнопкой мыши до точки, в которой ветвь хочет сбросить на мастер, и нажмите Сброс.После сброса в командной строке введите git push -f. Теперь внесите необходимые изменения в ветку, подтвердите push еще раз.Если вы создадите запрос на получение сейчас, он будет иметь только новый коммит после сброса ветви.

...