Reputation: 173
I want to make a clone of a github repostitory in a (self-hosted) bitbucket server and from time to time pull the latest changes from the github repository. In our clone we're going to do some experimental stuff which will never leave our repository.
To illustrate; with fossil I'd make sure that our repository and their repository has the same project id, and I'd do this:
$ cd ~/checkout/prjdir
$ fossil pull https://their.org/prj/foo --once
This would get all the latest checkins, branches, tags, etc. And then to push it to our organization's server:
$ fossil push
There will never be any conflicts; our changes will be made on experimental branches so there's no need for any merges when updating from upstream.
I've tried to replicate the fossil workflow and copy/pasted some things which seem relevant and come up with this for the initial cloning:
$ git clone https://github.com/foo/bar.git
$ cd bar
$ git remote set-url origin https://ourbitbucket.org/foo/bar.git
$ git push -u origin master
This however doesn't appear to have brought with it the tags (tags are important to us).
With git (github as upstream and our bitbucket server for our own tags/branches):
Upvotes: 4
Views: 840
Reputation: 241968
Don't change the URL of the repository. Just create two remotes, upstream
and origin
.
Tags aren't pushed by default. Use --tags
to push them.
$ git clone https://github.com/foo/bar.git
$ cd bar
$ git remote rename origin upstream
$ git remote add origin https://ourbitbucket.org/foo/bar.git
$ git push -u --tags origin master
Whenever you want to synchronize with the upstream, do
$ git checkout master
$ git pull upstream master
or even
$ git reset --hard upstream/master
and rebase your branch (or merge master into it) to incorporate their changes into your work:
$ git checkout my-branch
$ git rebase master
or
$ git checkout my-branch
$ git merge master
Upvotes: 6