首页 > 其他 > 详细

Git-07-分支管理

时间:2021-08-04 15:52:03      阅读:18      评论:0      收藏:0      [点我收藏+]



创建与合并分支

为什么要创建分支?
假设你准备开发一个新功能,但是需要两周才能完成,
第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。
如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。


现在有了分支,就不用怕了。
你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,
而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,
这样,既安全,又不影响别人工作。

1 创建dev分支,并且切换到dev分支

git checkout -b dev命令相当于如下两条命令:
git branch dev		#创建dev分支
git checkout dev	#切换到dev分支


查看当前分支:
git branch

技术分享图片


2 修改readme.md 内容,并且在分支上提交

新增加了一行test!

技术分享图片


3 切换到master分支,并且查看readme.md文件

发现刚刚添加的那一行不存在

技术分享图片

原因如下:刚才添加的行是在dev分支上提交的,而当前master分支此刻的提交点并没有改变

技术分享图片


4 把dev分支工作成果合并到master分支

命令:git merge dev

test!这一行存在了

技术分享图片


5 删除dev分支

命令:git branch -d dev

技术分享图片




解决分支冲突

1 创建新分支 feature1,且切换到feature1分支

技术分享图片


2 修改readme.md文件,增加一行

技术分享图片


3 在feature1分支提交修改

技术分享图片


4 切换到master分支,并且也修改readme.md文件,提交

技术分享图片

现在feature1分支和master分支都有了提交,变成如下所示

技术分享图片


5 合并分支

报错,提示readme.md文件存在冲突,必须手动解决冲突后在提交

技术分享图片

查看readme.md文件内容,git用 <<<<<<,   ======,  >>>>>> 表示不同分支的内容

技术分享图片


6 修改readme.md文件保存,提交

技术分享图片

现在master和feature1分支变成如下所示

技术分享图片

用 git log --graph --pretty=oneline --abbrev-commit 命令也能查看到

技术分享图片


7 本次不需要在合并了,直接删除feature1分支即可

技术分享图片




分支策略管理

合并分支时候,git会用 fast forward 模式,
这种模式下,删除分支后,会丢掉分支信息。

强制禁用 fast froward 模式,git 就会在合并分支时生成一个新的 commit ,这样可以从历史上看出分支信息。

1 创建dev分支,修改readme.md 文件,并提交

技术分享图片


2 切回master分支,合并dev分支,使用 --no-ff 参数

git merge --no-ff -m "merge with no-ff" dev

技术分享图片


3 git log查看分支历史

git log --graph --pretty=oneline --abbrev-commit

技术分享图片

可以看出来不使用 fast forward 模式,合并分支是这样的

技术分享图片


4 分支策略

1.master分支应该是非常稳定的,仅用来发布新版本,平时不在上面干活
2.干活都在dev分支上,dev分支是不稳定的
3.每个人都在dev分支上干活,是不是往dev分支合并就行了,如下图

技术分享图片




bug分支

需求:
  需要修复一个101的bug,但是当前dev分支的工作没提交

技术分享图片


1 git stash 命令可以把现场 ‘储藏‘ 起来,等修复bug以后继续使用,然后工作区是干净的了

技术分享图片


2 假设是需要在master分支修复bug,切换到master分区,然后在master分支上创建一个 issue-101 的bug分支

技术分享图片


3 修复bug ,假设是在test!后面加上 修复 两个子,提交

技术分享图片


4 切换到master分支,合并分支,删除 issue-101 分支

技术分享图片


5 切回到dev分支继续工作

git stash list:查看

git stash pop:恢复的同事把stash内容也删除

技术分享图片


6 查看readme.md文件,可以接着上次没做完的工作继续做了

技术分享图片




Feature分支

开发一个新功能时候,最好是新建一个feature分支

开发一个代号为vulcan新功能

1 在dev分支上新建一个分支

技术分享图片


2.模拟开发完成,提交

技术分享图片


3 切回dev分支,准备合并

技术分享图片


4 由于各种原因,刚开发的新功能需要取消,删除分支

git branch -d freature-vulcan不能删除新的分支

技术分享图片

在没有被合并以前,可以通过下面办法删除

强行删除: git branch -D freature-vulcan

技术分享图片




多人协作

当从远程仓库克隆时,实际上git自动把本地的master分支和远程的master分支对应起来了,
并且远程的仓库默认名称是origin

1 查看远程仓库信息:显示了抓取和推送的origin地址,如果没有推送权限,就看不到push地址

技术分享图片


2.推送dev分支

git push origin dev

技术分享图片

在github官网查看

技术分享图片


3 抓取分支,在linux机器上抓取,注意需要把 ssh key 添加进去

技术分享图片

查看只有readme.md这个文件

技术分享图片


6 linux上修改dev.txt文件,提交到远程dev分支

技术分享图片


7 在windows上进行添加文件,提交到远程dev分支

报错,提示要先 git pull

技术分享图片


8 git pull ,直接git pull 也报错,原因没有指定本地的dev与远程的origin/dev分支链接

技术分享图片

设置dev和origin/dev 链接,然后在git pull

git branch --set-upstream dev origin/dev

技术分享图片


9 git push origin dev

技术分享图片


10 多人协作总结

首先,可以用 git push origin branch-name 推送自己的修改
如果失败,则因为远程的分支比你本地的更新,所以先用 git pull 试图合并
如果合并失败,则解决冲突,并在本地提交
没有冲突或者解决冲突以后,在用 git push origin branch-name 推送就可以

Git-07-分支管理

原文:https://www.cnblogs.com/lichengguo/p/15098177.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!