Как я могу легко переместить локальную ветвь Git на пульт с другим именем?
мне было интересно, есть ли простой способ толкать и тянуть локальную ветвь с удаленной ветвью с другим именем, не всегда указывая оба имени.
например:
$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
теперь, если кто-то обновляет remote_branch_name, я могу:
$ git pull
и все объединено / перемотано вперед. Однако, если я внесу изменения в свой локальный "newb", я не могу:
$ git push
вместо этого я должен:
% git push origin newb:remote_branch_name
кажется немного глупо. Если git-pull использует git-config branch.newb.merge чтобы определить, откуда тянуть, почему не мог git-push есть подобная настройка? Есть ли хороший ярлык для этого или я должен просто продолжить долгий путь?
4 ответов:
конечно. Просто установите свой
push.defaulttoupstreamчтобы подтолкнуть ветви к их восходящим потокам (что то же самое, чтоpullбудет тянуть, определяютсяbranch.newb.merge), а не толкать ветви к тем, которые совпадают по имени (что является настройкой по умолчанию дляpush.default,matching).git config push.default upstreamобратите внимание, что это раньше называлось
trackingнеupstreamперед Git 1.7.4.2, так что если вы используете более старую версию Git, используйтеtrackingвместо. Элементpush.defaultопция была добавлена в Git 1.6.4, так что если вы на более старая версия, чем эта, у вас вообще не будет этой опции, и вам нужно будет явно указать ветвь для нажатия.
когда вы делаете первый толчок добавить параметр-u:
git push -u origin my_branch:remote_branchпоследующие толчки будут идти туда, куда вы хотите.
EDIT:
согласно комментарию, это только настраивает pull.
git branch --set-upstreamдолжны сделать это.
команду Адам теперь устарел. Вы можете использовать:
git branch --set-upstream-to origin/my_remote_branch my_local_branchдля установки восходящей ветви
my_local_branchtoorigin/my_remote_branch.
вот процесс, который работал для меня.
git clone original-repo-url git remote rename origin upstream git remote add origin new-repo-urlтеперь ваше новое РЕПО будет "origin", а исходное РЕПО - "upstream". Подтвердите это, запустив git remote-v. (Примечание: Upstream используется для извлечения из исходного РЕПО - для того, чтобы ваша локальная копия была синхронизирована с проектом, в который вы хотите внести свой вклад, - и origin используется для вытягивания и выталкивания, поскольку вы можете внести свой вклад в свое собственное РЕПО).
git push origin masterтеперь мастер вашего нового удаленного РЕПО (ВКЛ Github) будет синхронизирован с исходным мастером, но у него не будет ни одной из ветвей функций.
git rebase upstream/branch-name git push origin masterRebase-это интеллектуальное слияние. Затем снова нажмите Мастер, и вы увидите выбранную ветвь функции как мастер на новом РЕПО.
дополнительно:
git remote rm upstream git remote add upstream new-repo-url
Comments