Этот ответ от коллеги решил мою проблему:
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"
.