title: Maintaining a clone of a git repository
body: <p>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.</p>
  
  <p>To illustrate; with fossil I'd make sure that our repository and their repository has the same project id, and I'd do this:</p>
  
  <pre><code>$ cd ~/checkout/prjdir
  $ fossil pull https://their.org/prj/foo --once
  </code></pre>
  
  <p>This would get all the latest checkins, branches, tags, etc.  And then to push it to our organization's server:</p>
  
  <pre><code>$ fossil push
  </code></pre>
  
  <p>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.</p>
  
  <p>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:</p>
  
  <pre><code>$ 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
  </code></pre>
  
  <p>This however doesn't appear to have brought with it the tags (tags are important to us).</p>
  
  <p>With git (github as upstream and our bitbucket server for our own tags/branches):</p>
  
  <ol>
  <li>how do I make a complete clone of a repository (including all
  branches and tags)?</li>
  <li>once I have a cloned repository, how do I
  pull all the latest changes (branches, tags included) from upstream
  (on github) and push them to our server (bitbucket)?</li>
  </ol>