Как сделать пул-запрос в GitHub только с последним коммитом в основной ветке моего разветвленного репозитория - PullRequest
33 голосов
/ 06 апреля 2011

Я разветвил репозиторий на github.Я сделал некоторые изменения и сделал запрос на извлечение.

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

Как выбрать только последний коммит в ветке master моего разветвленного репозитория, чтобы я мог сделать запрос на извлечение только с этим коммитом?

Ответы [ 2 ]

47 голосов
/ 07 апреля 2011

Этот ответ от коллеги решил мою проблему:

git checkout -b NEW_BRANCH_NAME LAST_COMMIT_NAME_BEFORE_THE_ONE_WANTED
git cherry-pick COMMIT_NAME_WANTED
git push origin NEW_BRANCH_NAME

Затем на GitHub вы можете сделать запрос на извлечение новой созданной вами ветки.

ОБНОВЛЕНИЕ

Я спросил и ответил на этот вопрос, когда впервые начал работать с git.Теперь, когда я знаю больше об этом, я хотел бы расширить этот ответ.

При работе с форком, вы, вероятно, хотите, чтобы он обновлялся относительно исходного репо.Итак, вот шаги, которые я бы выполнил сегодня:

git remote add upstream GIT_URL_OF_THE_ORIGINAL_REPO

Теперь у вас есть ссылка под названием upstream, которая указывает на этот репо.По умолчанию у вас должен быть еще один с именем origin, который в этом случае будет указывать на ваш форк.upstream и origin - именно так люди обычно называют эти ссылки, но вы можете использовать любое имя, какое захотите.

Теперь вам нужно получить последние изменения:

git fetch upstream

Тогдаесли вы хотите обновить свой форк с изменениями upstream, вы должны сделать это:

git checkout master //checkout your master branch
git merge upstream/master //merge changes from the master branch in upstream into the branch you checked out (master)
git push origin master //if you want to push your updated master to your remote fork

Теперь, чтобы ответить на исходный вопрос, что бы я сделал сегодня, если бы я хотел представитьновый PR, будет :

git fetch upstream //get the latest changes from the original repo
git checkout -b my_new_feature upstream/master //create a new branch, starting from the master in the original repo
git cherry-pick WHATEVER_COMMIT_I_WANT //select the commit I want and add it to this new branch
git push origin my_new_feature //push a new branch to my fork

Тогда я бы запросил новый PR для my_new_feature ветви.

Вы можете заменить git cherry-pick WHATEVER_COMMIT_I_WANT просто изменением / добавлениемфайл и затем делать git add FILENAME, git commit -m "Fixing some stuff".

4 голосов
/ 06 апреля 2011

Возможно, вы могли бы поместить коммиты в отдельную ветвь (ветвление перед первым набором коммитов), предполагая, что они не связаны с первыми коммитами. Тогда отдельная ветвь может быть целью запроса извлечения и будет включать только ваш второй набор коммитов.

...