Adding And Removing Remote Branches
来源:互联网 发布:数据恢复技术 pdf 编辑:程序博客网 时间:2024/06/06 03:04
Adding And Removing Remote Branches
Commands discussed in this section:
- git branch
- git checkout
- git push
- git remote
Creating Remote Branches
One way to add a new branch to the remote repository is to first add the branch to your local repository and then push that local branch to the remote repository. Let’s see what branches we have now:
amy$ git branch* master
We have just one branch. Not much to shake a stick at. So Amy creates a new branch named v0:
amy$ git branch v0
She then pushes the new branch named v0 to the remote repository named origin.
The git push syntax is: git push [remote-repository-name] [branch-or-commit-name]:
amy$ git push origin v0Total 0 (delta 0), reused 0 (delta 0)To file:///home/gitadmin/project1.git * [new branch] v0 -> v0
Currently the master and v0 branches are identical, but they will diverge (the whole point of branches is to diverge)
as users make different commits to each branch.
Tracking The New Branch: Other Users
When other users git clone the shared repository, the git clone command will automatically:
- Create the a new local branch named v0
- Configure their local repository to correctly track changes in the new v0 branch. For example, when the users are on the new local v0 branch, The user can type git fetch, git pull, and git push without specifying the origin remote andv0 branch with every command.
Tracking The New Branch: Amy (The Creator of the Remote Branch)
Since Amy created the new remote branch, she has more configuration to do to make her local v0 branch configured correctly.
We can see that the v0 branch is not yet configured correctly for Amy:
amy$ git checkout v0Switched to branch 'v0'$ git pullYou asked me to pull without telling me which branch youwant to merge with, and 'branch.v0.merge' inyour configuration file does not tell me, either. Pleasespecify which branch you want to use on the command line andtry again (e.g. 'git pull ').See git-pull(1) for details.If you often merge with the same branch, you may want touse something like the following in your configuration file: [branch "v0"] remote = merge = [remote ""] url = fetch = See git-config(1) for details.
If she enjoys typing, she could always specify the remote repository (origin) and the branch (v0) to update every time she needs to pull or fetch:
amy$ git pull origin v0From file:///home/gitadmin/project1 * branch v0 -> FETCH_HEADAlready up-to-date.
However, Amy recently chipped a fingernail while playing volleyball and prefers to minimize her typing. So she configures git to automatically pull/fetch from the new remote v0 branch, without having to specify the v0 repository and branch name every time she uses git pull or git fetch.
She’s running version 1.7.0 of git which has the –set-upstream flag:
amy$ git branch --set-upstream v0 origin/v0Branch v0 set up to track remote branch v0 from origin.
With git versions earlier than 1.7.0 that don’t have the –set-upstream flag, you can use the following instead of using the above git branch –set-upstream v0 origin/v0 command:
$ git config branch.v0.remote origin$ git config branch.v0.merge refs/heads/v0
That does the job, and from now on, all she has to type is:
amy$ git pullAlready up-to-date.
Zack plays with the new branch
The next time Zack retrieves the latest commits from the shared repository, he’ll be amazed to see the new v0 branch automatically created for him:
zack$ git pullFrom file:///home/gitadmin/project1 * [new branch] v0 -> origin/v0 Already up-to-date.
Zack can then switch to the new branch:
zack$ git checkout v0Branch v0 set up to track remote branch v0 from origin.Switched to a new branch 'v0'
Zack adds to the new branch
zack$ echo A Zack change >> zack.filezack$ git commit -a -m'added a new line to zack.file'[v0 93c1568] added a new line to zack.file 1 files changed, 1 insertions(+), 0 deletions(-)zack$ git pushCounting objects: 5, done.Delta compression using up to 2 threads.Compressing objects: 100% (2/2), done.Writing objects: 100% (3/3), 302 bytes, done.Total 3 (delta 0), reused 0 (delta 0)Unpacking objects: 100% (3/3), done.To file:///home/gitadmin/project1.git 05affb3..93c1568 v0 -> v0
Amy deletes the remote branch
The syntax for deleting branches isn’t exactly intuitive. To remove a remote branch, use the git push command like this:
amy$ git push origin :v0To file:///home/gitadmin/project1.git - [deleted] v0
Another flavor of the same command that does the same thing, but maybe is a little more intutive:
amy$ git push origin --delete v0To file:///home/gitadmin/project1.git - [deleted] v0
Well, maybe not much more intuitive. The git push origin portion of the command line tells git you want to change something in the remote repository you are calling origin, and the rest of the line “–delete v0” tells git what you want to do with the remote repository.
Zack removes tracking branches whose remote branches are removed
After someone deletes a branch from a remote repository, git will not automatically delete the local repository branches when a user does a git pull or git fetch. However, if the user would like to have all tracking branches removed from their local repository that have been deleted in a remote repository, they can type:
zack$ git remote prune originPruning originURL: file:///home/gitadmin/project1.git * [pruned] origin/v0
Note the above pruning removed the tracking branch, but did not delete the v0 branch in Zack’s local repository. Nice pruning, Zack. Your shrubbery, I mean, project, is coming together.
- Adding And Removing Remote Branches
- “Tracking Branches” And “Remote-Tracking Branches”
- “Tracking Branches” And “Remote-Tracking Branches”
- Adding and Removing Tags on GitHub
- Git: Adding and Removing Tags on GitHub
- 3.9.2 - Lists - Adding and Removing Objects
- git push and delete remote branches
- Adding and removing KITL drivers in x86 BSPs
- Removing and adding DataNodes in cluster by hadoop
- git delete remote branches
- remote tracking branches
- Adding and Removing Subviews(增加和删除子视图的官方文档)
- Adding and Removing Routes in the Linux Routing Table in C/C++
- Git: Removing commits on remote
- Moving git repository and all its branches, tags to a new remote repository keeping commits history
- PHP - Xml - Adding or Removing XML Nodes
- git里Remote Tracking Branches与Tracking Branches
- Track all remote git branches as local branches
- 推荐视觉跟踪领域的几个研究者
- c语言string类函数实现汇总
- flashback空间爆满IMAGECOPY 占的比率最大,通过RMAN释放空间
- 工作笔录3
- 学习笔记一:使用Mutex实现线程之间互斥
- Adding And Removing Remote Branches
- 学习如何做一个论坛(1)转百度知道
- 我开发的stm32以太网开发工具(深蓝DevBoard)
- USACO Sweet Butter 与图的寻径算法
- php递归函数实现遍历指定文件下的目录与文件数量
- 第四章:良好的坏习惯
- 北京这些天
- 第五章:另一条路
- 利用动态代理实现AOP的简单示例(JDK和cglib分别实现)