Git merge 不同的branch
Git的优势是可以创建不同的branch,然后在每个branch上开发。那么问题是:如果不同的branch之间需要做同步,比如sourceBranch上做的修改也需要同步到targetBranch,改怎么做?
A). 如果一个branchA (targetBranch)是有远程Git server管理的,另一个branchB (sourceBranch)是自己本地的,即把sourceBranch的修改merge到targetBranch上:
1. cd <your workspace>
2. git branch //假定现在所在的branch是targetBranch,并最好保证没有未提交的修改,并且已经更新到最新
3. git checkout -b branchB //创建一个本地的sourceBranch并切换到sourceBranch
4. git commit //把sourceBranch上做的修改先提交
5. git checkout branchA //切换回targetBranch
6. git merge --no-ff branchB //把sourceBranch的修改merge到targetBranch。注意:建议merge的时候总是用 --no-ff 选项
7. git status //保证现在workspace是干净的
8. git push origin branchA //push到远程,如果远程有新的修改,先做一下git pull
B). 如果两个branch都是远程管理的,想把branchB (sourceBranch)的内容同步到branchA (targetBranch)上
1. cd <your workspace>
2. git branch //假定现在所在的branch是branchA (targetBranch),并最好保证没有未提交的修改,并且已经更新到最新
3. git checkout branchB //确保同一个workspace能在不同的branch直接切换,即保证 .git/config里 [remote "origin"] 的内容是 fetch = +refs/heads/*:refs/remotes/origin/*
4. git merge branchA //先把targetBranch的修改merge到sourceBranch上,这样有冲突可以在sourceBranch上先解决,保证之后再merge回targetBranch的时候容易处理,targetBranch不再有冲突
5. 解决conflicts如果merge的结果里有显示conflicts
6. git commit //解决冲突后先commit到branchB
7. git checkout branchA //切换到targetBranch
8. git merge --no-ff branchB //建议merge的时候总是用 --no-ff 选项
9. git push origin branchA //把sourceBranch的修改merge到targetBranch之后,push到远程的targetBranch
Git merge 不同的branch的更多相关文章
- git merge dryrun
As noted previously, pass in the --no-commit flag, but to avoid a fast-forward commit, also pass in ...
- git merge & git rebase
git merge & git rebase bug error: You have not concluded your merge (MERGE_HEAD exists). hint: P ...
- git merge branch
git branch look at your branches git branch newbranch git checkout newbrach do something git check ...
- Git merge一个branch到另一个branch
在项目开发过程中,需要merge一个branch (branch名 taskBranch) 到另一个名为develop 的branch 方法: 先保证当前停留在develop的branch上 然后执行 ...
- git merge branch to master
git checkout master git pull git merge testbranch git push
- git merge之squash
看CM源码时,发现历史记录里有很多squash,于是google了解了一下. Git相对于CVS和SVN的一大好处就是merge非常方便,只要指出branch的名字就好了,如: 1 2 3 4 5 $ ...
- git merge简介【转】
转自:http://blog.csdn.net/hudashi/article/details/7664382 git merge的基本用法为把一个分支或或某个commit的修改合并现在的分支上.我们 ...
- git merge branches
git clone url #克隆新的版本库 git init git pull repo_name #有关联的远程库,抽取并和本地合并 git fetch remote_repo_name #抽取并 ...
- git merge –squash介绍
Git相对于CVS和SVN的一大好处就是merge非常方便,只要指出branch的名字就好了,如: $ git merge another $ git checkout another # modif ...
随机推荐
- java+Selenium+TestNg搭建自动化测试架构(2)实现跨浏览器功能
1.切换浏览器类:其中包含了切换浏览器的方法,以及关闭浏览器,设置等待时间,以及重写的断言方法 package com.rrx.framework; import java.io.IOExceptio ...
- C# 委托类型及使用
转载声明:转载本文是为了方便自己查看,有需要的朋友建议查看原文(注:原文中有作者纠正的评论,我没有搬运)原文地址:http://www.cnblogs.com/akwwl/p/3232679.html ...
- PostgreSQL函数(存储过程)----笔记
PostgreSQL 函数也称为 PostgreSQL 存储过程. PostgreSQL 函数或存储过程是存储在数据库服务器上并可以使用SQL界面调用的一组SQL和过程语句(声明,分配,循环,控制流程 ...
- linux中ip命令使用介绍
ifconfig是CentOS 5.6系统中经典的配置网络的命令,但是到了CentOS 7的时候,命令就变成了ip了,我们也要学习,我们也要与时俱进.跟随高手一起学习 查看链路 ip link sho ...
- logstash 切分tomcat日志
以下配置是logstash切分tomcat catalina.out日志. http://grok.qiexun.net/ 分割时先用这个网站测试下语句对不对,能不能按需切割日志. input { ...
- Linux命令:pushd
语法 pushd [-n] [+N | -N | dir] 更改新目录并(或)压栈,或者把栈里的某个目录推到栈顶. 说明 pushd dir # 切换到目标目录dir,并将dir压栈. pushd # ...
- Linux一行命令处理批量文件
前言 最好的方法不一定是你最快能想到的.这里提供一种使用sed命令构造命令解决处理批量文件的技巧,供参考. 需求案例1 将当前目录下所有的0_80_91.txt.0_80_92.txt.0_80_93 ...
- Oracle 正则
https://www.cnblogs.com/qmfsun/p/4467904.html 匹配汉字可以用Oracle 内置函数 unistr('\4e00') -unistr('\9fa5') 来定 ...
- 【C++】C++string类总结
一.string的初始化 首先,为了在程序中使用string类型,必须包含头文件 <string>.如下: #include <string> 注意这里不是string.h,s ...
- 20175213 2018-2019-2 《Java程序设计》第4周学习总结
## 教材学习内容总结 在第四周的学习过程中,我学习了第五章的内容. 第五章内容总结: 1.子类继承的方法只能操作子类继承和隐藏的成员变量. 2.子类和父类在同一包的继承性 子类自然继承了其父类中不是 ...