Git简谈

1.工作原理

git是Linux创始人Linus Torvalds于2005年为Linux内核开发而创作的分布式版本管理系统,在此之前广泛使用的集中化的版本控制系统,Centralized Version Control Systems,如subversion等,GIT出现后虽其使用相对复杂一些,但因其高效率,获得了程序员的普遍接受。

版本控制系统就是为了存储文件的修改历史,最初人们使用本地版本控制系统,就是在本地手动备份不同版本文件,记录文件修改历史信息,之后是集中化的版本控制系统,多人开发时仅需获取最新版本的文件快照,共同维护一份单一集中管理服务器上的文件,这中做法很简单,缺点是开发者的工作高度依赖单点的中央服务器,可靠性容灾性很差。分布式版本控制系统中,每个开发者都需把远程的代码仓库完整的拉取(pull)下来,本地文件又分成了工作区,缓冲区,历史仓库,因此能够在本地独立开发。
Git简谈_第1张图片

git本地工作是通过维护不同的文件状态来实现的,可分为三个区,
工作区(Working Directory):这是开发时对文件进行直接编辑修改的区域,开发完成后,如果想把自己的修改提交到远程服务器仓库对应的分支,还有两个状态要走。缓冲区(Stage):工作区的修改,首先是要提交到缓区,缓冲区是作为工作区到本地仓库的一个过渡,可通过addstash命令将工作区修改加入到缓冲区。本地仓库:通过add加入到缓冲区的文件修改,如果要放入本地仓库,可通过commit命令来操作,至此,工作区的修改才放入到本地仓库,修改放入本地仓库后,才算准备好提交到远程服务器仓库上。最后,通过push命令即可即可将本地修改最终推送到远程服务器仓库对应分支上。
Git简谈_第2张图片

2.常用操作

下载客户端、配置帐号、初始化仓库、add/commit/pull/push,解决冲突等可参考码云社区

(1).分支管理策略

首先要明白,git分支是指文件修改的快照并不是文件的完整copy,
可以理解为1个分支上只记录了该分支的上的修改(除非主动merge或rebase主分支上的修改),因此分支切换是非常方便快速的。

开发流程中,从开发到部署代码分支会分为development,releasemaster,这是三个最关键的分支,在正常的版本开发工作中,开发者都基于development分支新建功能分支,1个功能特性开发完成即合并到development分支转测试,待版本所有功能特性都开发测试完成,development分支代码pull requestrelease分支上准备发布上线,发布上线成功后,release分支代码合并到master分支上进行备份,当大版本之间需要修改系统bug时,此时可以从release上直接拉bug fix分支,修改后同时checkoutdevelopment,备份到master分支,如此,既能保持release分支与master分支一致,又能保证release分支代码不会有超前development分支的修改,有效避免代码的分歧和冲突。

(2)如何merge部分文件到主分支

现在前后台独立开发,代码仓库还是同个,若某个后台人员与前台同事共同在一个功能分支开发时,需要把自己完成的服务提前合到主分支时,该如何操作呢?这个时候checkout就会发挥出非常好的作用,首先基于当前功能分支,新建一个ready_to_master_branch分支
,切换到ready_to_master_branch分支,从共同开发的功能特性分支feature_branch挑捡(checkout)出自己修改的文件夹或文件,然后便可将ready_to_master_branch合并到master分支。

git branch ready_to_master_branch
git checkout ready_to_master_branch
git checkout feature_branch ./src/web.back.end.code/service.java

参考材料:

[1] https://git-scm.com/book/zh

[2] https://blog.csdn.net/chenxiqilin/article/details/54408817

[3] GitHub入门与实践.[日]大塚宏记著,支鹏浩等译:提取码: cj8h

[4] https://gitee.com/help/articles/4107

[5] http://www.allitebooks.org/version-control-with-git-2nd-edition/

你可能感兴趣的:(Info,git,github,版本控制系统)