Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
docs:git:starting_a_new_remote_branch [2010/04/04 10:39] billhdocs:git:starting_a_new_remote_branch [2010/07/28 16:08] (current) billh
Line 2: Line 2:
 In the examples below, there is a shared repo (shared), a user1 (doing the branch changes), and a user2 (needs to pull the branch changes). In the examples below, there is a shared repo (shared), a user1 (doing the branch changes), and a user2 (needs to pull the branch changes).
  
-===== method 1: push a new branch directly to the shared repo =====+Method 1 may be better for you if the branch already exists locally, and you need that history pushed to the shared repo. 
 + 
 + 
 +===== method 1: start a local branch and push it to the remote ===== 
 +  * shared repo has one branch: master 
 +  * user1 creates a new local branch called dev<code> 
 +$ git checkout -b dev 
 +</code> 
 +  * push the new local branch to the shared repo:<code> 
 +$ git push origin dev 
 +</code> 
 +  * but wait - even though user1 created the branch and pushed it to the remote, the local branch is not yet tracking the shared branch 
 +    * option 1 - use %%--set-upstream%%<code> 
 +git branch --set-upstream dev origin/dev 
 +(output should be: Branch dev set up to track remote branch dev from origin.) 
 +</code> 
 +    * option 2 - delete the local branch and create it again with %%--track%%<code> 
 +$ git checkout master 
 +$ git branch -D dev 
 +$ git checkout --track -b dev origin/dev 
 +</code> 
 +    * option 3 - manually edit your .git/config by adding lines similar to the following (this is what %%--set-upstream%% does for you)<code> 
 +[branch "dev"
 + remote = origin 
 + merge = refs/heads/dev 
 +</code> 
 +  * user2 can pull changes to see the new branch, then use the same command as user1 to create a local branch and track the remote branch:<code> 
 +$ git pull 
 + 
 +From /path/to/shared/repo 
 + * [new branch]      dev        -> origin/dev 
 +Already up-to-date. 
 + 
 +$ git checkout --track -b dev origin/dev 
 +$ git branch -a 
 + 
 +* dev 
 +  master 
 +  remotes/origin/HEAD -> origin/master 
 +  remotes/origin/dev 
 +  remotes/origin/master 
 +</code> 
 + 
 +===== method 2: push a new branch directly to the shared repo =====
   * shared repo has one branch: master   * shared repo has one branch: master
-  * user1 creates a branch called dev<code>+  * user1 pushes new branch (dev) to the shared repo<code>
 $ git push origin origin:refs/heads/dev $ git push origin origin:refs/heads/dev
 </code> </code>
Line 41: Line 84:
   remotes/origin/master   remotes/origin/master
 </code> </code>
 +
 +===== Advanced Topics =====
 +==== creating a new remote branch from a branch other than master ====
 +we want to create a new remote branch called foo2 from an existing remote branch called foo
 +<code>
 +$ git push origin origin/foo:refs/heads/foo2
 +</code>
 +
 +==== remove a remote branch ====
 +<code>
 +git push origin :old_branch_to_be_deleted
 +</code>
 +
 +===== External Links =====
 +  * http://cheat.errtheblog.com/s/git
 +
 +
  
  • docs/git/starting_a_new_remote_branch.1270399158.txt.gz
  • Last modified: 2010/04/04 10:39
  • by billh