Избегайте нежелательных слияний и других коммитов при выполнении запроса на GitHub - PullRequest
24 голосов
/ 11 мая 2011

Я разработал проект на Github.

Пусть удаленный апстрим будет upstream, а мой удаленный репозиторий - origin. Моя локальная ветка master настроена на отслеживание удаленной ветки master. Затем я добавил кое-что в локальный master и время от времени сливался с апстримом.

Только сегодня, когда я захотел выдать запрос на удаление, я обнаружил проблему: запрос на получение состоит из тех коммитов слияния и тех нежелательных коммитов , которые я делал ранее без заботы. Однако я хочу просто представить последний сделанный мной коммит, который должен быть извлечен как один коммит. Что я могу сделать, чтобы спасти это?

Ответы [ 5 ]

27 голосов
/ 11 мая 2011

Вместо слияния вы хотите перебазировать. Вы можете сделать это вручную или автоматически при вытягивании.

git pull --rebase upstream master
git push --force origin master

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

10 голосов
/ 12 мая 2011

Если я понимаю ваш вопрос, вы хотите избавиться от промежуточных / одноразовых коммитов, которые вы делали в своей ветке.Попробуйте что-то вроде этого:

git checkout -b for-upstream remotes/origin/master (create a new branch from the upstream origin)
git cherry-pick <sha-of-the-one-commit-you-want-to-submit> (fix any conflicts if necessary)

это должно дать вам локальную ветвь "для восходящего потока", которая содержит только основной канал + ваш 1 коммитЗатем вы можете отправить эту ветку для запроса извлечения

6 голосов
/ 12 мая 2011

На Github вы не можете создать запрос на извлечение для одной конкретной регистрации для ветви, в которой есть несколько проверок, отделяющих ее от восходящего потока.

Создать ветку специально для каждого запроса на получение, который вы намереваетесь сделать.Это позволяет вам продолжать работать, не опасаясь загрязнения запроса на удаление.

3 голосов
/ 11 мая 2011

Будет ли это работать: Создайте отдельную ветку только с тем коммитом, который вам нужен, и отправьте запрос на извлечение для этой ветви.

0 голосов
/ 04 сентября 2013

Это похоже на ответ на ваш вопрос (раздел «Обновление 2011-04-15» темы):

Рабочий процесс Git и ребаз против вопросов слияния

Михей описывает технику сквош-слияний , которая позволяет объединять изменения из вашей функциональной ветви как единый коммит в главную ветвь.

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