Git源代码管理系统要求规范.docx
《Git源代码管理系统要求规范.docx》由会员分享,可在线阅读,更多相关《Git源代码管理系统要求规范.docx(9页珍藏版)》请在冰豆网上搜索。
Git源代码管理系统要求规范
Git源代码管理规X
一、分支管理
使用git进展源代码管理,一般将某个项目的所有分支分为以下几条主线:
1.Master
顾名思义,既然名字叫Master,那么该分支就是主分支的意思。
master分支永远是production-ready的状态,即稳定可产品化发布的状态。
2.Develop
这个分支就是我们平常开发的一个主要分支了,不管是要做新的feature还是需要做bugfix,都是从这个分支分出来做。
在这个分支下主要负责记录开发状态下相对稳定的版本,即完成了某个feature或者修复了某个bug后的开发稳定版本。
3.Featurebranches
这是由许多分别负责不同feature开发的分支组成的一个分支系列。
newfeature主要就在这个分支系列下进展开发。
当功能点开发测试完毕之后,就会合并到develop分支去。
4.releasebranches
这个分支系列从develop分支出来,也就是预发分支。
在预发状态下,我们往往会进展预发环境下的测试,如果出现缺陷,那么就在该release分支下进展修复,修复完毕测试通过后,即分别并入master分支后develop分支,随后master分支做正常发布。
5.Hotfixbranches
这个分支系列也就是我们常说的紧急线上修复,当线上出现bug且特别紧急的时候,就可以从master拉出分支到这里进展修复,修复完成后分别并入master和develop分支。
下面这X图将完整展示这一个流程
二、工作原理
Git的工作方式:
也就是说,每次提交版本变动的时候,git会保存一个快照(snapshot)。
如果文件没有被更改,git也不会再次保存,而是提供一个到原来文件的。
这样一来,git更像是一个小型的文件系统。
此外,git的所有操作都可以是本地的,仅仅在将新版本的内容上传到服务器上时才需要连接网络。
Git目录〔repository〕是Git保存元数据和对象数据库的地方。
这也是Git最重要的局部。
工作目录〔workingdirectory〕是项目某个版本的内容。
暂存区〔stagingarea〕是一个简单的文件,通常包含在Git目录中。
其中存储了将要进入下一次提交的信息。
Git的根本工作流程如下:
1.在工作目录中修改文件。
2.标识(stage)文件,并将文件快照添加到暂存区。
3.执行mit,将获取暂存区中的文件,并将快照永久保存到Git目录中。
三、常用命令
1.创建工程
>>gitinit
2.提交修改
>>gitadd后就从修改变为暂存
>>gitmit后就从暂存变为提交。
3.提交规X
在mit时,如果有对应PR〔需求项〕,请在第一行写上PR号,然后再描述信息〔另起行〕,并把涉与到改动的文件名附上。
4.回溯
改错了,不过还没有gitadd
>>gitreset--hard
改错了,已经gitadd
>>gitreset-q[files]
(其实就是gitadd的反向操作)
改错了,已经gitmit
>>gitreset--softHEAD^
(其实就是gitmit的反向操作)
已经gitmit,忘记写注释〔PR〕或者漏提交了局部文件
如果添加注释可以直接执行命令gitmit--amend,填写注释保存
如果添加文件先执行gitadd后执行gitmit--amend
5.创建分支
查看分支
>>gitbranch
切换分支
>>gitcheckout[branchname]
创建分支(在当前代码的根底上)
>>gitbranch[branchname]
6.合并分支
先检出目标分支再把其他分支合并进去
>>gitcheckout[branchname]
>>gitmerge[other_branch]
7.删除分支
>>gitbranch-d[branchname]
(不能删?
用这个!
)
>>gitbranch-D[branchname]
8.标签管理
>>
9.远程操作
克隆远程库
>>gitclone
定义远程库
>>gitremote
从远程库取回更新
>>gitfetch
从远程库取回更新并合并
>>gitpull
推送至远程库
>>gitpush
四、操作流程(本地)
1.准备工作
初始化目录
>>gitinit
>>gitmit-m'masterinit'
然后从master分支中拉出develop分支
>>gitcheckout-bdevelop
2.功能点开发
有新的需求或功能点需要开发时,从最新develop分支中拉出一个feature分支
>>gitcheckout-b[featurename]
完成feature开发后需要对feature分支进展合并操作
>>gitcheckoutdevelop
>>gitmerge[featurename]
3.处理冲突
当合并分支出现冲突时,需要手动将文件冲突的局部进展修改。
对修改后的文件保存并重新提交。
4.产品发布
当develop分支已经达到了一个可以发布的状态,将最新的develop分支拉出来成为一个release分支
>>gitcheckout-brelease
假设需要一些环境配置,新建配置文件并提交
>>gitadd
>>gitmit-m'release1'
当遇到一些预发环境下的bug,这个时候我就直接在release分支下进展修复演进,如果bug问题很大,如此需要重新并入develop中,拉出新的feature进展开发重构。
如果预发一切正常,需要将release分支同时并入master分支和develop分支,master分支供线上发布,develop分支供下次开发演进。
>>gitcheckoutmaster
>>gitmerge[releasename]
>>gitcheckoutdevelop
>>gitmerge[releasename]
5.线上bug热修复
当碰到一些线上意想不到的bug,需要紧急修复时,就直接从master分支拉出hotfixes分支进展修复。
>>gitcheckoutmaster
>>gitcheckout-b[hotfixname]
bug修复完毕,测试通过后我们将分支合并到master和develop中去。
>>gitcheckoutdevelop
>>gitmerge[hotfixname]
>>gitcheckoutmaster
>>gitmerge[hotfixname]
五、远程操作
远程操作的5个常用命令
●gitclone
●gitremote
●gitfetch
●gitpull
●gitpush
1.从远程主机克隆一个版本库
>>gitclone<版本库的网址>
该命令会在本地主机生成一个目录,与远程主机的版本库同名。
2.管理主机名
为了便于管理,Git要求每个远程主机都必须指定一个主机名。
不带选项的时候,gitremote命令列出所有远程主机。
3.将更新取回本地
>>gitfetch<远程主机名>
默认情况下,gitfetch取回所有分支〔branch〕的更新。
如果只想取回特定分支的更新,可以指定分支名。
>>gitfetch<远程主机名><分支名>
gitbranch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。
取回远程主机的更新以后,可以在它的根底上,使用gitcheckout命令创建一个新的分支。
>>gitcheckout-bnewBrachorigin/master
也可以使用gitmerge命令或者gitrebase命令,在本地分支上合并远程分支。
>>gitmergeorigin/master
或者
>>gitrebaseorigin/master
4.取回更新同时合并到本地
gitpull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。
>>gitpull<远程主机名><远程分支名>:
<本地分支名>
如果远程分支是与当前分支合并,如此冒号后面的局部可以省略。
>>gitpulloriginnext
上面命令表示,取回origin/next分支,再与当前分支合并。
实质上,这等同于先做gitfetch,再做gitmerge。
>>gitfetchorigin
>>gitmergeorigin/next