本技术文档主要讲的是关于git的基本使用以及git工作流等的认识和实际开发过程中的冲突解决等。 1. Git与代码托管平台 1.1 Git与Github比较 Git: 是一个版本管理工具 , 只在本地使用的一个版本管理工具,其作用就是可以让你更好的管理你的程序, 比如你原来提交过的内容,后面虽然修改过,但是通过git这个工具,可以把你原来提交的内容重现出来,这 样对于你后来才意识到的一些错误进行更改,进行还原。 GitHub (官网: https://github.com/): 是一个基于Git的远程代码托管平台(网站),可以在github上建立一个远程库,可以将本地库的代码提交到远程库,这样你的每次提交,别人也都可以看到你的代码,同时别人也可以帮你修改你的代码,这种开源的 方式非常方便程序员之间的交流和学习。 1.2 Git托管平台 局域网: GitLab(可自行搭建) 外网环境: GitHub 码云 1.3 本地库和远程库 团队内部协作开发
远程跨团队协作开发
2. Git命令行操作 2.1 打开命令行窗口 安装Git后,在资源管理器的空白处,单击鼠标右键打开窗口,点击 Git Bash Here ,打开Git命令行窗口, 在窗口中可直接使用Linux命令操作:
2.2 初始化git本地库 命令:git init 效果:
注意: .git 目录中存放的是本地库相关核心配置文件,也不要随意删除与修改
.git 目录仓库目录说明:
hooks目录:脚本文件的目录。
info目录:保存了不希望在
.gitignore 文件中管理的忽略模式的全局可执行文
logs目录:日志目录
objects目录:存储所有数据内容
refs目录:存储指数据(分支)的提交对象的指针config文件包含了项目特有的配置选项description文件仅供 GitWeb 程序使用
HEAD文件指向当前分支
作用:只为区分不同开发人员的身份信息
用户名:zhangyang
Email:[email protected]
注意:这里的签名信息和登录远程库的帐号和密码没有任何关系(码云,Github)
命令:
用于查看工作区、暂存区的状态
根据状态提示,往仓库中创建一个demo01.txt文件,文件保存一些内容(按i插入内容,按:wq,保存并退出, 按 ':q!' 不保存强制退出)
再git status查看状态提示 untracked files有未追踪文件)
3.2添加到暂存区
3.2 提交到本地库 将暂存区提交到本地库
命令:git commit [-m “提交说明信息”]
修改demo1.txt文件内容,在查看状态
4. Git分支管理
4.1什么是git分支 在版本控制过程中,使用多条线同时推进多个任务 如下图:
4.2 Git分支的好处? 同时并行推进多个功能开发,提高开发效率 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始 即可。 4.3 Git分支操作 查看分支: git branch -v 创建分支: git branch 新分支名 删除分支(删除的分支不是当前正在打开的分支): git branch -d 分支名 切换分支: git chckout 分支名 合并分支: 第1步:切换到接受修改的分支上 命令: git checkout 需要接受的分支名 第2步:执行 merge 命令 命令: git merge 有新内容的分支名 解决冲突: 冲突的表现:如下图
冲突的解决: 第1步:编辑文件,删除特殊符号 第2步:把文件修改到满意为止,保存退出第3步:git add 文件名 第4步:git commit -m "日志信息" 注意:此时 commit 后面一定不要有文件名 5 Git 工作流与实战演练 5.1什么是工作流 因为项目开发中,多人协作,分支很多,虽然各自在分支上互不干扰,但是我们总归需要把分支合并到一起,而且真实项目中涉及到很多问题,例如版本迭代,版本发布,bug 修复等,为了更好的管理代码,需要制定一个工作流程,这就是我们说的工作流,也有人叫它分支管理策略。 "工作流程"在英语里,叫做"workflow"或者"flow",原意是水流,比喻项目像水流那样,顺畅、自然地向前流动,不会发生冲击、对撞、甚至漩涡。 5.2GitFlow工作流说明
Gitflow 工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。
剩下要说明的问题围绕着这2个分支的区别展开。 5.3 分支种类
主干分支 master 主要负责管理正在运行的生产环境代码。 永远保持与正在运行的生产环境 完全一致。热修复分支 hotfix 主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修 理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。 开发分支 develop 主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。 准生产分支(预发布分支) release 较大的版本上线前,会从开发分支中分出准生产分支,进行最后阶段的集 成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后 可以视情况删除。 功能分支 feature 为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支 中独立出来。 开发完成后会合并到开发分支。 5.4 工作流实战演练
5.4.1第1步: 创建开发分支 使用 经理 用户,在本地仓库中新创建一个 develop 分支 项目右键 → Git → Repository → Branches 点击 New Branch 创建分支 框中输入新分支名:develop , Checkout branch 勾选后,会马上切换到新创建的这个分支 右下角可查看到当前所在分支: develop
5.4.2第2步: 经理 develop分支止开发新功能
5.4.3第3步: 经理 提交到本地库并推送到远程develop分支
上面点击 commit and Push 后,会弹出下面窗口,提示进行 push 到远程库
在码云上 切换develop分支查看
5.4.3第4步: 总监 拉取远程库develop分支代码到本地develop分支
总监先在本地创建好develop分支 总监再进行远程库develop分支代码到本地develop分支
5.4.4第5步: 总监 切换回主分支master(本地库)
项目右键 → Git → Repository → Branches
如下已经切换成功:
5.4.5第6步: 总监 将本地develop合并到mater分支上 项目右键 → Git → Repository → Merge Changes...
合并结果:
5.4.6第7步: 总监 将合并后的master推送到远程库master
项目右键 → Git → Repository → push