Как выполнить запрос на перенос в GitHub только с последней фиксацией в основной ветке моего разветвленного репозитория

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

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

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

Ответ 1

Этот ответ от сотрудника исправил мою проблему:

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 вы можете выполнить запрос на перенос для новой ветки, которую вы создали.

UPDATE

Я спросил и ответил на этот вопрос, когда я начал работать с 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".

Ответ 2

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