Git 以其开源、简单、快捷、分布式、高效等特点成为当前最流行的源代码管理工具, 我们来通过以下三张图来认识一下Git及其在项目中使用思路。
分布式
Git作为分布式版本控制系统的代表,客户端并不仅仅获得最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。
这样一来,Git在本地磁盘上就保存着所有有关当前项目的历史更新,并且Git中的绝大多数操作都只需要访问本地文件和资源,不用连网,开发者都可以非常轻快地频繁提交更新,等到了有网络的时候再上传到远程的镜像仓库。用SVN/CVS等集中式管理工具,没有网络开发者就无法做任何事情,或者很难。
Git 常见命令
Git系统中分本地和远程仓库(remote repository)。
其中本地分三个区,工作区(workspace)、暂存区(index)和本地仓库(local repository。这就是为什么没有网络我们依然可以提交代码更新(commit),因为提交仅是提交到本地仓库,待有网络之后可以再推送(push)到远程仓库。
而远程仓库(remote repository)永远为我们保存一份代码拷贝。
git fetch VS git pull
git fetch是将远程仓库的更新获取到本地仓库,不影响其他区域。
git pull则是一次性将远程仓库的代码更新到工作区(同时也会更新本地仓库)。
Git Flow
在熟悉了Git的常用命令以后,我们来看看如果在真实的项目开发中如何使用Git。
一般而言,软件开发模型有常见的瀑布模型、迭代开发模型、以及互联网公司推荐的敏捷开发等不同的模型。每种模型有各自应用场景。Git Flow重点解决的是由于源代码在开发过程中的各种冲突导致开发活动混乱的问题。
feature分支 :一些功能开发过程中使用的分支,通过代码评审和测试后可以合并回develop分支, 注意从不与master交互。
develop分支:feature以及release交互。开发者不允许直接在develop上进行开发。
release分支:为了发布存在,总是基于develop,发布以后又合并回develop。当然对应的tag跑到master这边去了。
hotfix分支:基于master,并最后合并到master和develop。生命周期较短,用了修复紧急bug或小粒度修改发布。注意养成清理一些不再使用的feature 和 hotfix的习惯,
master分支:仅是一些关联的tag,不允许在master上开发。
有兴趣的可以拓展了解下GitHub Flow, 其也是基于分支的工作流,非常适合代码部署非常频繁的团队和项目。
欢迎分享更多有意思,有知识的图片。
更多
请关注豆志昂扬微信公众号获取更多内容:
- 直接添加公众号豆志昂扬;
- 微信扫描下图二维码;