Проблема здесь в том, что работа выполнена в основной ветке на сервере с момента вашей фиксации. Таким образом, эта работа должна быть объединена с вашей локальной копией главной ветви, прежде чем вы сможете отправить дополнительные изменения в главную.
Вы уже зафиксировали изменения третьей стороны (давайте назовем этого разработчика John Doe) в вашей основной ветви. ,Это не очень хорошая идея. Вы еще не просмотрели его.
Простой способ отменить это - удалить репозиторий с вашего компьютера, а затем отменить его. Конечно, делайте это только в том случае, если в вашем локальном репо нет работы, которой нет в удаленной копии. Другой вариант - последовать совету здесь , чтобы сбросить локальный мастер на то, что находится на сервере.
Затем в локальном репо создайте новую ветку для выполнения изменений. Эта ветка должна начинаться с того же HEAD, что и master.
#make sure we base our work off master
git checkout master
#create a new branch to contain the changes and switch to it
git checkout -b feature/john-doe-changes
#push the branch up to the server
git push -u origin feature/john-doe-changes
Затем возьмите код от другого разработчика и интегрируйте его с вашей текущей кодовой базой.
Как только выГотово, и все работает, как вы хотите, зафиксируйте изменения и отправьте их на сервер.
git commit -m "Integrated code from John Doe"
git push
На этом этапе вы можете перейти на сайт GitHub и открыть PR. Исходная ветвь - feature/john-doe-changes
, а целевая ветвь - master
. Просмотрите PR, чтобы убедиться, что вы довольны им. Попросите других разработчиков вашей команды проверить его, если это практика вашей компании, или они готовы это сделать.
Если какие-либо изменения необходимы, внесите их локально, затем подтвердите и отправьте их на сервер.
Затем завершите PR, который объединит изменения от feature/john-doe-changes
до master
на сервере.
Затем в локальном репо вы можете выполнить очистку.
#switch to master
git checkout master
#pull changes from remote master to your local master
git pull
#update your remote references
git fetch --prune
#remove the feature branch, it's not needed anymore
git branch -d feature/john-doe-changes