git分支开发
线上有三个分支:master、java、php分支。如下图
其中master分支:空白
php分支:空白
Java分支:
1 需求一:
拉取php分支代码到本地,创建a.txt文件,b.txt文件并提交到远端;
1.1 复制url
1.2 打开终端进行克隆
其实这里直接克隆就可以,不用切换分支,默认会把所有的分支克隆下来,然后在本地仓库直接切换分支就好了。
1.3 查看远端分支文件
1.4 创建a.txt与b.txt文件
1.5 推送到远端
修改配置文件:
回车进行编辑:
按Esc退出编辑,按:wq! 退出。
然后进行查看状态,并提交:
1.6 查看远端分支
2 需求二:
假设a.txt 是一个项目,b.txt 是另外一个项目。现在你在做第一个项目a.txt,做了一半了,忽然,另外一个项目b.txt的bug需要你修改,任务比较紧急,此时你需要先暂停a.txt 的开发,去开发b项目,处理这个bug需要修改a.txt文件,编辑b.txt以及添加b1.txt文件。
思路:在本地php的分支上面在创建两个分支,一个开发a项目,一个开发b项目,最后在合并merge到php这个分支上,进行提交推送。
2.1 创建a分支,与b分支分别开发两个项目或功能模块
2.2 切换分支到a,编辑a.txt文件
2.3 编辑a.txt文件并退出
查看:
此时需要及时处理b项目的bug,编辑b.txt,修改a.txt文件以及添加b1.txt文件
2.4 提交a.txt 保存到本地仓库
2.5 切换b分支,开发b项目
查看a.txt是内容,看看能不能看到a分支上提交刚刚提交的代码?
答案是:并看不到刚刚在a分支上面对a.txt文件的编辑的内容。
2.6 编辑b.txt,新增b1.txt文件,然后在对a.txt进行修改
2.7 提交b分支
2.8 合并(merge)到php分支
注意这里merge前需要先pull
Merge合并操作:其实都是先合并到本地分支,再推送到远端相应的分支。
2.9 查看php分支代码
此时,bug修改完了,可以先提交代码到远端了:
查看远端分支情况:
2.10 现在可以在回去继续开发a项目,切换分支到a进行继续开发编辑
2.11 编辑a.txt文件,然后提交
2.12 Merge到php本地分支
2.12.1 解决冲突
假设你之前没有解决过冲突;
思路:根据提示,走着看看着走:
根据给出的提示:
执行 git merge –abort :回到合并前的状态;
既然说a.txt 文件冲突,那就查看a.txt文件,进行手动解决冲突:
2.12.2 编辑a.txt文件进行冲突解决
查看远端代码:
2.12.3 查看状态,还是处于冲突中,但是已经将冲突解决了,所以可以直接提交了并推送到远端了。
2.13 推送到远端php分支
2.14 pull并查看a.txt文件,验证冲突是否解决
2.15 此时查看本地a分支,与b分支的代码情况:
发现a分支,与b分支还是之前的代码,并没有更新;
要想实现分支与php代码一直,需要merge:
2.16 同步a,b分支与php分支的代码
同步php本地仓库到本地a分支代码仓库:
3 合并到远端master分支
3.1 先查看远端maste分支下代码情况
还是空空如也。
3.2 创建本地master分支仓库
3.3 将远端的remotes/origin/php 分支 合并到master分支
3.4 推送到远端master分支
查看远端分支:
终端查看:已经合并上去了。
4 Git命令解析:
4.1 克隆
git clone [–b 远端分支名] https://github.com/vhviqd/java26.git
其中[]表示可选,如果不写,默认是master分支。
4.2 创建远端分支
git push origin 本地分支名
若想创建一个远端分支名与本地分支名不一样的。
git push origin 本地分支名:远端分支名
4.3 删除远端分支
git push origin :远端分支名
4.4 查看版本记录
git reflog
4.5 切换版本
git reset --hard 版本号
利用版本切换可以使代码回退到之前的版本。只是本地分支对应的仓库的版本回退,并不涉及远端,只有push推送了,才会更新也断代码。
4.6 拉取代码
git pull :更新本地代码,使得与远端代码保持一致
4.7 推送代码
git push :把本地代码推送到远端分支。