Git 分支管理
来源:互联网 发布:ubuntu怎么连接 编辑:程序博客网 时间:2024/06/06 20:49
第一、GIT工作原理:
master分支:
用分支操作:
当用户创建一个新的分支(假设新的分支为“brh”)后,GIT会建立一个新的brh指针,此指针将会指向master相同的提交,再将HEAD指向brh,就表示当前分支在brh上。
在整个过程中,发现HEAD的指针发生了改变,因为HEAD永远都要指向当前的分支(当前工作的分支),一旦创建分支,那么一定需要针对代码进行新的修改(再次提交);
分支提交:
如果有新提交,则master分支不会改变,只有brh分支会发生改变
此时的master分支的版本号就落后于子分支了。但是不管子分支在怎么开发,也不是最新的发布版本,所有的发布版本保存在master分支上,就必须将子分支与master的分支合并!
分支合并:
当分支合并之后,实际上就相当于master的分支的提交点修改为子分支的提交点,而后这个合并应该在master分支上完成,而后HEAD需要修改指针,断开brh分支,而指向原来master分支;
删除子分支:
分支删除之后所有的内容也就取消了。
简单实现分支步骤:
1、git branch brh #创建分支
2、git branch #查看分支
3、切换到brh分支上
4、创建并切换分支
5、修改hello.php文件
<?php public function test(){echo "Happy New Year";}
6、在子分支上将修改进行提交
再次切换到主分支
<?php public function test(){echo "你好吗?";}
当再次切换到brh分支上的时候就会再次回到原来的代码
<?php public function test(){echo "Happy New Year";}
当分支的数据提交之后实际上并不会去修改master分支内容,这就证明了,俩个分支上的内容是彼此独立的
7、将俩个分支提交到远程服务器上(GITHUB)
提交之后在服务器上查看俩个分支:
8、brh与master分支进行合并(一定要在主分支上)
这样实际上修改了master指针为brh分支的指针信息,所以此时的合并方式为【Fast-forward】,表示快速合并方式,快速的合并方式并不会产生任何commit id,他只是利用了合并子分支的commit id 继续操作;
9、此时执行删除brh操作,并且提交master分支 (亦可以用“-D”来强制性删除)
10、删除远程服务器上的brh分支 (还可以“git push origin :brh”来删除)
此时服务器上已经删除了brh分支
查看分支:
第二、冲突解决
当你的代码改动逻辑不是特别大的话,git可以自动给你解决,冲突大的话要用手动改
git log --graph --pretty=oneline #来查看解决冲突的历史
第三、分支管理策略
之前的合并全都是“Fast forward”方式完成的,这种方式知识改变了master指针,可在分支的时候也可以不适用这种快合并,即:增加一个“--no-ff”参数,这样表示在合并之后会自动生成一个新的commit id,从而保证了数据的完整性;
简单的实例:
master分支应该是非常稳定的,也就是仅用来发布新版本,不要在次分支上开发;
在各个子分支上进行开发工作;
团队中每个成员都在各个分支上工作。
第四、分支暂存
当我们要放下现在的任务去完成必然的任务时,我们可以先将现在的任务提交到暂存区中,完成别的任务以后我们可以用以下的命令来回复!
4.1、git stash list #直接可以列出所有的暂存状态
4.2、从暂存区之中进行恢复,暂存区恢复以后那么所暂停的操作将没有存在的意义,但是也有人会认为有意义,所以恢复有俩种方式:
方式一、先恢复,而后在手工删除暂存
git stash applygit stash drop
方式二、恢复的同时也将stash内容删除
git stash pop
那么下面的任务就可以像之前那样进行代码的提交,而后删除掉所在的分支;
这样就可以很好的解决代码中途暂停修改的操作!
第五、补丁:patch
补丁并不是针对于所有代码的修改,知识针对于局部的修改。只是将要修改的代码的补丁信息发送给开发者,而在GIT之中页提供了俩种简单的补丁:
1、使用git diff 生成标准patch;
2、使用git format-patch声称git专用的pat;
简单的实例:
git diff 生成补丁
5.1.1、创建一个cbrh分支
5.1.2、生成补丁
5.1.3、在cbrh分支上提交代码
5.1.4、生成补丁文件
5.1.5、在切换回master分支 git checkout master
5.1.6、创建并切换一个新分支 git checkout -b patchbrh
5.1.7、应用补丁信息 git apply mypat (此时补丁可以成功的使用了)
5.1.8、提交补丁的操作 git commit -a -m "Pacth Apple"
5.1.9、切回master分支之中进行分支合并
git format-patch 生成补丁
5.2.1、创建一个brh分支 git checkout -b brh
5.2.2、提交 git commit -a -m "Add toString Method"
5.2.3、下面需要与原始代码做一个比较,而且比较后会自动的生成补丁
5.2.4、创建并且切换到patchbrh分支
git checkout mastergit checkout -b patchbrh
5.2.5、应用补丁的信息,利用“git am ” 完成
5.2.6、提交应用更新
关于俩种补丁方式的说明:
1、使用git diff生成的补丁兼容性比较好,如果你是在不是git管理的仓库上,此类方式生成的补丁是非常容易接收的;
2、但是如果你是向公共的开发社区进行代码的补丁更正,那么建议使用git format-patch,这样不仅标准,而且也可以将更正人得信息进行公布。
第六、多人协作开发
6.1、创建并切换到一个新的分支:brh
git checkout -b brh
6.2、在新的分支上新建一个文件 dept.php
<?php public function dept(){echo "aaaaaaa";}
6.3、将代码进行提交
6.4、将俩个分支提交到服务器上
git push origin mastergit push origin brh
6.5、模拟第二个开发者,创建一个新的命令行窗口,并且将代码克隆下来(F:procline)
6.6、【二号】查看分支信息
6.7、【二号】建立并且换到brh分支上
git checkout -b brh
6.8、【二号】将远程服务器上的brh分支上的内容拷贝到本地brh分支上
6.9、【二号】增加一个admin.php文件
6.10、【二号】将新的代码进行提交
git add .git commit -m "Add Admin.php File"
6.11、【二号】现在本地的brh分支代码发生了变化,将变化的代码提交到远程的brh分支上
6.12、【一号】现在这个时候原始的开发者目录下还是上一次提交的内容,那么需要取得最新的代码才行
取得最新的数据有俩种方式:
1、git fetch :此操作知识取得最新分支数据,但是不会发生master合并操作;
2、git pull :此操作取最新分支数据,并且同时发生master合并操作;
这表示当前的brh分支与服务器上的brh分支没有关系,要想得到代码必须让俩者之间产生关系,用以上的代码可以实现
6.13、【二号】修改admin.php文件,并且提交
6.14、【二号】向服务器提交代码的修改
6.15、【一号】也对admin.php文件进行了修改,并且提交
6.16、【一号】此时抓取最新的
此时俩个开发者同时修改了同一个文件admin.php,所以产生了冲突,同时一号开发者中的代码变为如下:
6.17、【一号】手工解决冲突文件内容
6.18、再次提交和服务器推送
此时已经成功地解决掉了冲突问题,“如有写的不好的地方请多多包含!”
0 0
- 3.3 Git 分支 - 分支管理
- git 分支管理-----本地分支,远程分支
- Git分支管理
- Git 创建管理分支
- Git分支管理策略
- Git分支管理策略
- Git分支管理策略
- Git分支管理策略
- Git分支管理策略
- Git分支管理
- git分支管理
- Git远程分支管理
- git分支管理策略
- Git分支管理策略
- Git分支管理策略
- Git分支管理策略
- Git 分支管理策略
- Git分支管理策略
- 一个在ios中使用tensorflow的demo
- MySql安装成功后用命令行进行必要的配置
- Android WIFI框架分析(2)
- LINQ TO XML
- 几种数据库连接字符串
- Git 分支管理
- django shell 方式更新数据
- Android 中关于 【Cursor】 类的介绍
- mysql大全
- 程序员语录---温馨小家庭
- ubuntu查看python安装路径
- subLime设置不换行
- JavaScript学习笔记 CH.3 SEC.3 方法
- 笔试-大华2014