How to add, use and delete remotes, using Linux kernel source repo as an example.
Currently one remote:
$ git remote -v origin https://github.com/torvalds/linux.git (fetch) origin https://github.com/torvalds/linux.git (push) $
Query linux-next
before adding it as a remote:
$ git ls-remote https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
Add as a new remote with name ln
:
$ git remote add ln https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
There are no new branches yet:
$ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master $
But we have a new registered remote:
$ git remote -v ln https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git (fetch) ln https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git (push) origin https://github.com/torvalds/linux (fetch) origin https://github.com/torvalds/linux (push) $
Count the current objects:
$ git count-objects -v count: 0 size: 0 in-pack: 6542717 packs: 1 size-pack: 2684927 prune-packable: 0 garbage: 0 size-garbage: 0 $
Fetch:
$ git fetch ln remote: Counting objects: 43368, done. remote: Compressing objects: 100% (16663/16663), done. remote: Total 43368 (delta 32248), reused 36955 (delta 26665) Receiving objects: 100% (43368/43368), 36.62 MiB | 23.38 MiB/s, done. Resolving deltas: 100% (32248/32248), done. From https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next * [new branch] akpm -> ln/akpm * [new branch] akpm-base -> ln/akpm-base * [new branch] master -> ln/master * [new branch] pending-fixes -> ln/pending-fixes * [new branch] stable -> ln/stable * [new tag] next-20190306 -> next-20190306 $
Count objects again:
$ git count-objects -v count: 0 size: 0 in-pack: 6586085 packs: 2 size-pack: 2723617 prune-packable: 0 garbage: 0 size-garbage: 0 $
Branches:
$ git branch -a * master remotes/ln/akpm remotes/ln/akpm-base remotes/ln/master remotes/ln/pending-fixes remotes/ln/stable remotes/origin/HEAD -> origin/master remotes/origin/master $
As long as a branch name is unique across all remotes:
$ git checkout akpm Branch 'akpm' set up to track remote branch 'akpm' from 'ln'. Switched to a new branch 'akpm' $
$ git branch -vv * akpm 02565b639c3b [ln/akpm] drivers/media/platform/sti/delta/delta-ipc.c: fix read buffer overflow master 610cd4eadec4 [origin/master] Merge branch 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip $
If there is a conflict with branch names:
$ git checkout -b lnmaster --track ln/master Branch 'lnmaster' set up to track remote branch 'master' from 'ln'. Switched to a new branch 'lnmaster' $
$ git fsck --no-reflogs Checking objects: 100% (6708499/6708499), done. Checking connectivity: 6708499, done. $
$ git remote remove ln $ git remote origin $