Вопрос: Сделать существующий филиал Git удаленной ветвью?


Я знаю, как создать новую ветку, которая отслеживает удаленные ветви, но как сделать существующий ответвление ветки удаленной ветвью?

Я знаю, что могу просто отредактировать .git/configфайл, но, похоже, должен быть более простой способ.


3027


источник


Ответы:


Учитывая отрасль fooи удаленный upstream:

Начиная с Git 1.8.0:

git branch -u upstream/foo

Или, если локальная ветвь fooне является текущей ветвью:

git branch -u upstream/foo foo

Или, если вам нравится вводить более длинные команды, они эквивалентны следующим двум:

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

Начиная с Git 1.7.0:

git branch --set-upstream foo upstream/foo

Заметки:

Все приведенные выше команды вызовут локальную ветвь fooотслеживать удаленную ветку fooот удаленного upstream, Старый (1.7.x) синтаксис устарел в пользу нового синтаксиса (1.8+). Новый синтаксис предназначен для более интуитивного и более легкого запоминания.


Смотрите также: Почему мне все время нужно делать `--set-upstream`?


3688



Вы можете сделать следующее (при условии, что вы выгружены на мастер и хотите нажать на удаленный мастер ветви):

Настройте «удаленный», если у вас его уже нет

git remote add origin ssh://...

Теперь настройте мастера, чтобы знать, чтобы отслеживать:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

И нажмите:

git push origin master

205



Я делаю это как побочный эффект толкания с помощью -uвариант, как в

$ git push -u origin branch-name

Эквивалентный длинный вариант --set-upstream,

git-branchкоманда также понимает --set-upstream, но его использование может ввести в заблуждение. Версия 1.8.0 изменяет интерфейс.

git branch --set-upstreamустарел и может быть удален в относительно отдаленном будущем. git branch [-u|--set-upstream-to]был введен с более здравым порядком аргументов.

...

Заманчиво было сказать git branch --set-upstream origin/master, но это говорит Git организовать локальную ветвь «origin / master» для интеграции с текущей проверенной ветвью, что маловероятно для пользователя. Опция устарела; использовать новый --set-upstream-to(с коротко-сладким -u).

Скажем, у вас есть местный fooи хотите, чтобы он обрабатывал ветвь с тем же именем, что и ее восходящий поток. Сделайте это с

$ git branch foo
$ git branch --set-upstream-to=origin/foo

или просто

$ git branch --set-upstream-to=origin/foo foo

128



You might find the git_remote_branch tool useful. It offers simple commands for creating, publishing, deleting, tracking & renaming remote branches. One nice feature is that you can ask a grb command to explain what git commands it would execute.

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch

51



Actually for the accepted answer to work:

git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa

49



I believe that in as early as Git 1.5.x you could make a local branch $BRANCH track a remote branch origin/$BRANCH, like this.

Given that $BRANCH and origin/$BRANCH exist, and you've not currently checked out $BRANCH (switch away if you have), do:

git branch -f --track $BRANCH origin/$BRANCH

This recreates $BRANCH as a tracking branch. The -f forces the creation despite $BRANCH existing already. --track is optional if the usual defaults are in place (that is, the git-config parameter branch.autosetupmerge is true).

Note, if origin/$BRANCH doesn't exist yet, you can create it by pushing your local $BRANCH into the remote repository with:

git push origin $BRANCH

Followed by the previous command to promote the local branch into a tracking branch.


40



1- update your local meta-data using : git fetch --all

enter image description here

2- show your remote and local branches using : git branch -a , see the following Screenshot

enter image description here

3- switch to target branch , that you want to linked with the remote: using

git checkout branchName

example :

enter image description here

4- Link your local branch to a remote branch using:

git branch --set-upstream-to nameOfRemoteBranch

N.B : nameOfRemoteBranch : to copy from the output of step 2 " git branch -r "

Example of use:

enter image description here


26



Make sure you run :

git config push.default tracking

to be able to push trouble free


22



Editing .git/config is probably the easiest and fastest way. That's what the Git commands for handling remote branches are doing, anyway.

If you don't want to muck with the file by hand (and it's not that hard to do), you can always use git config to do it...but again, that's just going to edit the .git/config file, anyway.

There are, of course, ways to automatically track a remote branch when using git checkout (by passing the --track flag, for example), but these commands work with new branches, not existing ones.


21



In very short

git branch --set-upstream yourLocalBranchName origin/develop

This will make your yourLocalBranchName track the remote branch called develop.


16



For 1.6.x, it can be done using the git_remote_branch tool:

grb track foo upstream

That will cause Git to make foo track upstream/foo.


14



Here, using github and git version 2.1.4, just do:

$ git clone git@github.com:user/repo.git

And remotes come by itelsef, even if not linked locally:

$ git remote show origin

* remote origin
  Fetch URL: git@github.com:user/repo.git
  Push  URL: git@github.com:user/repo.git
  HEAD branch: master
  Remote branches:
    develop tracked         <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    master  tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

But of course, still no local branch:

$ git branch
* master                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

See? Now if you just checkout develp, it will do the magic automatically:

$ git checkout develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'

So easy!


Summary. Just run this 2 commands:

$ git clone git@github.com:user/repo.git
$ git checkout develop

8