Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
docs:git:starting_a_new_remote_branch [2010/04/02 12:25] – created billh | docs:git:starting_a_new_remote_branch [2010/07/28 16:08] (current) – billh | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== starting a new remote branch ====== | ====== starting a new remote branch ====== | ||
- | < | + | In the examples below, there is a shared repo (shared), a user1 (doing the branch changes), and a user2 (needs to pull the branch |
- | (locally start the new branch) | + | |
- | git checkout -b new_feature_name | + | |
- | (push the new local branch to the shared repo) | + | Method 1 may be better for you if the branch |
- | git push origin new_feature_name | + | |
- | (other people pull changes) | ||
- | git pull | ||
- | (the new branch | + | ===== method 1: start a local branch and push it to the remote ===== |
+ | * shared repo has one branch: master | ||
+ | * user1 creates a new local branch | ||
+ | $ git checkout -b dev | ||
+ | </ | ||
+ | * push the new local branch to the shared repo:< | ||
+ | $ git push origin dev | ||
+ | </ | ||
+ | * 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%%< | ||
+ | git branch --set-upstream dev origin/ | ||
+ | (output should be: Branch dev set up to track remote branch dev from origin.) | ||
+ | </ | ||
+ | * option 2 - delete the local branch and create it again with %%--track%%< | ||
+ | $ git checkout master | ||
+ | $ git branch -D dev | ||
+ | $ git checkout --track -b dev origin/ | ||
+ | </ | ||
+ | * option 3 - manually edit your .git/config by adding lines similar to the following (this is what %%--set-upstream%% does for you)< | ||
+ | [branch " | ||
+ | remote = origin | ||
+ | merge = refs/ | ||
+ | </ | ||
+ | * 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:< | ||
+ | $ git pull | ||
- | (start tracking the remote branch with a new local branch) | + | From / |
- | git checkout --track -b new_branch | + | * [new branch] dev -> origin/dev |
+ | Already up-to-date. | ||
+ | |||
+ | $ git checkout --track -b dev origin/ | ||
+ | $ git branch -a | ||
+ | |||
+ | * dev | ||
+ | master | ||
+ | remotes/ | ||
+ | remotes/ | ||
+ | remotes/origin/master | ||
</ | </ | ||
+ | |||
+ | ===== method 2: push a new branch directly to the shared repo ===== | ||
+ | * shared repo has one branch: master | ||
+ | * user1 pushes a new branch (dev) to the shared repo< | ||
+ | $ git push origin origin: | ||
+ | </ | ||
+ | * user1 now has the following branches locally:< | ||
+ | $ git branch -a | ||
+ | |||
+ | * master | ||
+ | remotes/ | ||
+ | remotes/ | ||
+ | remotes/ | ||
+ | </ | ||
+ | * user1 now must create a local branch which is set to " | ||
+ | $ git checkout --track -b dev origin/dev | ||
+ | $ git branch -a | ||
+ | |||
+ | * dev | ||
+ | master | ||
+ | remotes/ | ||
+ | remotes/ | ||
+ | remotes/ | ||
+ | </ | ||
+ | * 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:< | ||
+ | $ git pull | ||
+ | |||
+ | From / | ||
+ | * [new branch] | ||
+ | Already up-to-date. | ||
+ | |||
+ | $ git checkout --track -b dev origin/dev | ||
+ | $ git branch -a | ||
+ | |||
+ | * dev | ||
+ | master | ||
+ | remotes/ | ||
+ | remotes/ | ||
+ | remotes/ | ||
+ | </ | ||
+ | |||
+ | ===== 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 | ||
+ | < | ||
+ | $ git push origin origin/ | ||
+ | </ | ||
+ | |||
+ | ==== remove a remote branch ==== | ||
+ | < | ||
+ | git push origin : | ||
+ | </ | ||
+ | |||
+ | ===== External Links ===== | ||
+ | * http:// | ||
+ | |||
+ | |||
+ |