master分支合并
一、Sourcetree简单介绍
通过Git可以进行对项目的版本管理,但是如果直接使用Git的软件会比较麻烦,因为是通过一条一条命令进行操作的。
Sourcetree则可以与Git结合,提供图形界面,使用会方便很多。Git和Sourcetree的安装这里就不多说,网上大把的教程。
二、分支的创建与合并
1、创建一个远程仓库
在GitHub官网上创建一个新的远程仓库:
2、用Sourcetree将这个远程仓库clone到本地
复制远成仓库的地址,然后利用改地址将远程仓库clone下来:
这样,在本地就创建好了一个本地仓库MainProject,可以到目标地址去查看一下。
3、准备测试用工程
这里创建一个android工程,不需要写什么代码。将创建好的整个android工程放到本地仓库的文件夹中,然后推送到远程仓库,这样测试用的工程基本准备好了:
4、创建分支
此时远程仓库中已经有一个项目了,下面模拟一个场景:假设有两个程序猿Allen、Bill同时在开发这个项目,项目经理要求Allen增加一个听歌的功能,要求Bill增加一个游戏的功能,那此时这两人就必须将远程仓库中的项目clone到他两各自的本地(这里就用一台电脑模拟,clone两次创建两个本地仓库):
clone下来后会有一个默认的分支master,可以理解成主分支,那去进行项目开的话不会直接使用master,会去创建一个新分支进行开发,避免直接使用master改来改去最后一团糟那就该崩溃了。每个人在各自的新分支中开发完成后将新分支合并到主分支中就可以了。
接下来Allen和Bill各自创建一个新分支:Allen_dev和Bill_dev
那如果Allen和Bill在开发过程中想看看对方的代码,那就必须将各自创建的新分支推送到远程仓库,然后将对方的分支拉取下来,每次想看的话先获取,然后再拉取最新的代码到本地仓库即可。
首次拉取别人的分支,在上面的获取之后,按如下操作,这里是Allen获取Bill的分支Bill_dev,Bill获取Allen的步骤一样:
注意:黑色加粗表示当前所处的分支,可以任意双击切换!
到此,各自的分支已经创建好了,下面Allen和Bill就可以在各自的新分支上进行项目经理安排的任务。
3、分支合并
Allen和Bill打开各自本地仓库中的项目代码进行开发,顺利完成项目经理交代的任务,然后各自的分支推送到远程仓库:
此时双方可以获取最新代码,拉取最新分支代码,拉取完成后就可以看到对方所增加的内容:
此时,各自都想将对方的代码整合到自己的项目中,这是就需要分支的合并。例如Allen合并Bill的分支:
合并完成后,可以看到之前打开的Allen的Android工程,会发现Bill添加的功能已经在Allen的项目中显示出来了。
最后不要忘了将各自合并后的分支推送。
现在Allen和Bill的工作已经完成了,各自的分支也推送到了远程仓库,此时项目经理就可以clone远程仓库的项目到本地,拉取Allen和Bill的提交的最新分支,将它们合并到主分支master中。这里就拿最开始创建的MianProject看作是项目经理,合并完成并推送。
3、解决冲突
到目前为止Allen和Bill各自进展顺利,但是假若两人同时在同一个文件进行了操作,那最后合并时就会出现冲突。比如在MainActivity:
此时当Allen和Bill推送自己的分支到远程仓库后,项目经理MainProject拉取代码进行合并:
假设首先合并Allen_dev到master没有问题,但是当合并Bill_dev到master时就会提示合并出现了冲突,需要解决。
点击关闭,然后切换到文件状态,找到出现冲突的文件,会有相应的冲突信息:
有冲突就要解决,右键单击冲突文件,选择解决冲突,这里有两个选项:
1、使用 我的版本 解决冲突
2、使用 他人版本 解决冲突
这里项目经理MainProject首先是将Allen的分支合并到主分支master,那么“我的版本”就是对应的Allen的,“他人版本”对应的就是Bill的。如果首先合并Bill的分支,那么对应关系就要对调一下。总的来说,“我的版本”对应的是首先合并到主分支master的。
采用一个人的版本,那么在冲突文件中就只会保留该人修改的代码,例如我这里就选择”使用 我的版本 解决冲突“,那么在MainActivity中就只会保留Allen添加的代码。
弹出对话框点击确定。
解决前:
解决后:
以上为基本的分支创建与合并的简单应用,合并冲突解决。
原文链接:http://blog.csdn.net/qq_34975710/article/details/74469068
master分支合并的更多相关文章
- 18、git提交代码并将develop分支合并到master分支上
提交合并代码流程: git add .git commit -m ''git pushgit checkout mastergit merge develop //将develop 分支与master ...
- git提交代码并将develop分支合并到master分支上
提交合并代码流程: git add .git commit -m ''git pushgit checkout mastergit merge develop //将develop 分支与master ...
- Git 分支合并
理解核心 Git最初只有一个分支,所有后续分支都是直接或间接的从这个分支切出来的. 在任意两个分支上,向前追溯提交记录,都能找到一个最近的提交同时属于这两个分支,这个提交就是两个分支的分叉节点 分支合 ...
- Git分支,合并,切换分支的使用
1.创建合并分支 在我们每次的提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD指针严格来说不是指向提交 ...
- 合并master分支到自己的分支
切换到自己的分支(比如:self):git checkout self: 在自己分支下,推送自己的分支到github远端仓库:git push --set-upstream origin self: ...
- 将分支代码合并到master和将master代码合并到dev
两种合并分支的方法: 都保证在合到的那个分支上面:A合并到B,即保证当前在B分支上. A merge B是把A中的改动放到B分支上,B merge A是把B中的改动merge到A中,例如把master ...
- git----------如何创建develop分支和工作流,以及如何将develop上的代码合并到master分支上
1.点击sourceTree 右上角的git工作流,或弹出一个弹出框,无需修改任何东西直接点击确认就可以创建develop. . 2.这里有两个分支了,当前高亮的就是你当前处在的分支.此时develo ...
- git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法
git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法提交代码流程:1.先提交代码到自己分支上2.切换到devlop拉取代码合并到当前分支3.合并后有变动的推送到自己 ...
- 【IntelliJ IDEA】在idea上操作 git分支合并【如何将远程swagger分支 合并到 远程 master分支上】【如何切换 本地分支】
============================================ 明确一点: 如果项目交给git管理了[如何将项目交给git管理:https://www.cnblogs.com ...
随机推荐
- linux环境的基本搭建
1.准备Linux环境(我的是centos系统) 如果你是hadoop用户在使用sudo之前需要配置一下:获取sudo权限 切换到root vi /etc/sudoersroot ALL=(ALL) ...
- maven <repositories>标签,<pluginRepositories>标签
在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文件,如log4j.jar,junit.jar等等.每建立一个项 ...
- Sqoop迁移Hadoop与RDBMS间的数据
Sqoop是用来实现结构型数据(如:关系型数据库RDBMS)和Hadoop之间进行数据迁移的工具.它充分利用了MapReduce的并行特点以批处理的方式加快数据的传输,同时也借助MapReduce实现 ...
- 由ArrayList来深入理解Java中的fail-fast机制
1. fail-fast简介“快速失败”也就是fail-fast,它是Java集合的一种错误检测机制.某个线程在对collection进行迭代时,不允许其他线程对该collection进行结构上的修改 ...
- sql server or Oracle: table MS_Description
--SQL Server表描述 及 字段描述的增.删.改.查询 --sql server 2000系统表sysproperties在SQL 2008中无效的问题 今天无意中在网上发现Sqlserver ...
- 将ReportingService 2008配置为匿名访问 - 转载
众所周知在ReportingService 2008中微软取消了匿名访问,我们再也不能像2005时那样靠修改IIS来实现匿名访问了.但在微软MSDN BLOG中还是提供了以下这种设置匿名访问的方式. ...
- iOS线程和进程的区别和联系
线程和进程的区别主要在于它们是不同的操作系统资源管理方式.进程有独立的地址空间,一个进程崩溃后,在保护模式的影响下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径.线程有自己的堆栈和局部变量 ...
- Windows API 编程-----Windows NT 环境下禁止任务切换
函数原型: BOOL WINAPI SystemParametersInfo( _In_ UINT uiAction, _In_ UINT uiParam, _Inout_ PVOID pvParam ...
- xunsearch bsd 10.1安装心酸路。。。
cc -c -I/usr/local/xunsearch/include/ test.cpp cc test.o -L/usr/local/xunsearch/lib -lscws -lm -o te ...
- RocketMQ读书笔记4——NameServer(MQ的协调者)
[NameServer简述] 对于一个消息队列集群来说,系统由很多机器组成,每个机器的角色.IP地址都不相同,而且这些信息是变动的(如在某些情况下,会有新的Producer或Consumer加入). ...