Copy a branch between Git repositories
Git is tricky to use: after 4 years I still have a hard time figuring out how to do simple operations with it. I just spent 30 minutes on that one:
Say you have 2 copies of the same repository repo1 & repo2. In repo1 there’s a
branch called copybranch that you want to copy to repo2 without merging it: just
copy the branch.
git pull repo1 copybranch from repo2 doesn’t work because it
will try to merge the copybranch into the current branch: no good.
It looks like
git fetch repo1 copybranch would be the way to go, but when I
did it, here’s what I saw:
From repo1 * branch copybranch -> FETCH_HEAD
After that a quick look at the logs doesn’t show
any of the commits from
copybranch. What happenned? Git copied the content of
copybranch, but instead of creating another branch named copybranch it creates a
temporary reference called
FETCH_HEAD doesn’t appear in the
logs. In summary: Git copied the branch, & made it invisible, because you
know… it makes perfect sense to hide what you just copied.
So how do you copy the branch, and create a branch with the same name referencing the commits? Here it is:
git fetch repo1 copybranch:copybranch