Как я могу легко переместить локальную ветвь 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 есть подобная настройка? Есть ли хороший ярлык для этого или я должен просто продолжить долгий путь?

613   4  

4 ответов:

конечно. Просто установите свой push.default to upstream чтобы подтолкнуть ветви к их восходящим потокам (что то же самое, что 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_branch to origin/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 master

Rebase-это интеллектуальное слияние. Затем снова нажмите Мастер, и вы увидите выбранную ветвь функции как мастер на новом РЕПО.

дополнительно:

git remote rm upstream
git remote add upstream new-repo-url

Comments

    Ничего не найдено.