Ответ 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"
.