#git #github
#git #github
Вопрос:
Я создал локальную ветку (XYZ) и извлек код из удаленной ветки (ABC). имя моей локальной ветки и имена удаленных веток не совпадают.
Я опубликовал / перенес свою ветку (XYZ) в git.
произошли некоторые изменения в начальной удаленной ветке (ABC), откуда я получил свой код.
как перенести эти изменения (изменения из ветки ABC на удаленном компьютере) в мою локальную ветку (XYZ) и отправить их в мою удаленную ветку (XYZ)?
Я настроил ветку stream на ABC и выполнил git pull. итак, изменения пришли, и я увидел, что нужно было сделать несколько коммитов. Просто запутался, если я сделаю git push
сейчас, куда пойдут мои локальные изменения? поскольку я настроил stream на ABC, они переходят в ABC или в ветку XYZ, которую я опубликовал / запустил ранее.
Пожалуйста, помогите мне разобраться. просмотрел документацию git, но очень запутанно.
Ответ №1:
Он отправит мои изменения в «отслеживаемую» удаленную ветку.
Вы могли бы увидеть, какую из ваших локальных ветвей, используя команду git branch -vv
.
Отслеживание удаленной ветки нужно только для того, чтобы иметь возможность использовать ярлыки git push
и git push <name-of-remote>
, а git знает, какую удаленную ветку обновлять.
Но вы всегда можете использовать полную командную строку git push <name-of-remote> <name-of-the-branch-you-want>
, и это создаст эту ветку в удаленном репозитории.
Это может быть полезно, но использовать это следует осторожно, потому что это может легко привести к беспорядку…
Комментарии:
1. Спасибо. есть ли способ перенести в ветку, которая не задана как восходящая. В принципе, я хочу работать в своей собственной ветке, локальной и удаленной, но периодически принимать последние изменения из другой ветки.. Я думаю, мне следует настроить свою собственную удаленную ветку как восходящую и извлекать данные из другой ветки, используя git pull origin <rmt-branch>, когда это необходимо.
Ответ №2:
О том, как перенести ABC в XYZ
Как только вы перейдете на ABC, вам нужно будет выполнить git pull origin ABC, чтобы убедиться, что ваша локальная ветка XYZ полностью обновлена.
После этого выполните git checkout XYZ и, наконец, объедините XYZ с помощью команды git merge ABC. Если у вас возникнет конфликт, появится предупреждающее сообщение с просьбой разрешить конфликты до завершения слияния.
Если вы отправите свою ветку XYZ, вы отправите свою локальную ветку в удаленное хранилище.
На веб-сайте git есть хорошее руководство для начинающих — the simple guide.
Ответ №3:
Вы действительно можете установить разные пульты дистанционного управления, например, один для извлечения, а другой для отправки. Если у вас уже есть свой удаленный набор, тот, из которого вы извлекаете, добавьте тот, в который вы отправляете :
git remote add upstream <url_of_upstream_git_server>
Он не перезапишет origin
удаленный сервер, с которого вы извлекаете данные, и вы сможете ссылаться на origin
или upstream
для их разных целей (обычно, извлекая из одного, передавая другому).
# for example
git pull origin master
git push upstream master
Ответ №4:
Когда вы отправляете изменения из вашей локальной ветки в удаленную, вы можете указать имя удаленной ветки. По умолчанию это будет удаленная главная ветка.