资源描述
Git源代码管理规范
一、 分支管理
使用git进行源代码管理,通常将某个项目标全部分支分为以下几条根本:
1. Master
顾名思义,既然名字叫Master,那么该分支就是主分支意思。master分支永远是production-ready状态,即稳定可产品化公布状态。
2. Develop
这个分支就是我们日常开发一个关键分支了,不管是要做新feature还是需要做bug fix,全部是从这个分支分出来做。在这个分支下关键负责统计开发状态下相对稳定版本,即完成了某个feature或修复了某个bug后开发稳定版本。
3. Feature branches
这是由很多分别负责不一样feature开发分支组成一个分支系列。new feature关键就在这个分支系列下进行开发。当功效点开发测试完成以后,就会合并到develop分支去。
4. release branches
这个分支系列从develop分支出来,也就是预发分支。在预发状态下,我们往往会进行预发环境下测试,假如出现缺点,那么就在该release分支下进行修复,修复完成测试经过后,即分别并入master分支后develop分支,随即master分支做正常公布。
5. Hotfix branches
这个分支系列也就是我们常说紧急线上修复,当线上出现bug且尤其紧急时候,就能够从master拉出分支到这里进行修复,修复完成后分别并入master和develop分支。
下面这张图将完整展示这一个步骤
二、 工作原理
Git工作方法:
也就是说,每次提交版本变动时候,git会保留一个快照(snapshot)。假如文件没有被更改,git也不会再次保留,而是提供一个到原来文件链接。这么一来,git更像是一个小型文件系统。另外,git全部操作全部能够是当地,仅仅在将新版本内容上传到服务器上时才需要连接网络。
Git目录(repository)是Git保留元数据和对象数据库地方。这也是Git最关键部分。
工作目录(working directory)是项目某个版本内容。
暂存区(staging area)是一个简单文件,通常包含在Git目录中。其中存放了将要进入下一次提交信息。
Git基础工作步骤以下:
1.在工作目录中修改文件。
2.标识(stage)文件,并将文件快照添加到暂存区。
3.实施commit,将获取暂存区中文件,并将快照永久保留到Git目录中。
三、 常见命令
1. 创建工程
>> git init
2. 提交修改
>> git add 后就从修改变为暂存
>> git commit 后就从暂存变为提交。
3. 提交规范
在commit时,假如有对应PR(需求项),请在第一行写上PR号,然后再描述信息(另起行),并把包含到改动文件名附上。
4. 回溯
改错了,不过还没有git add
>> git reset --hard
改错了,已经git add
>> git reset -q [files]
(其实就是 git add 反向操作)
改错了,已经git commit
>> git reset --soft HEAD^
(其实就是 git commit 反向操作)
已经git commit,忘记写注释(PR)或漏提交了部分文件
假如添加注释能够直接实施命令 git commit --amend,填写注释保留
假如添加文件先实施 git add 后实施 git commit --amend
5. 创建分支
查看分支
>> git branch
切换分支
>> git checkout [branch name]
创建分支(在目前代码基础上)
>> git branch [branch name]
6. 合并分支
先检出目标分支再把其它分支合并进去
>> git checkout [branch name]
>> git merge [other_branch]
7. 删除分支
>> git branch -d [branch name]
(不能删?用这个!)
>> git branch -D [branch name]
8. 标签管理
>>git tag v1.0
9. 远程操作
克隆远程库
>> git clone
定义远程库
>> git remote
从远程库取回更新
>> git fetch
从远程库取回更新并合并
>> git pull
推送至远程库
>> git push
四、 操作步骤(当地)
1. 准备工作
初始化目录
>> git init
>> git add readme.md
>> git commit -m 'master init'
然后从master分支中拉出develop分支
>> git checkout -b develop
2. 功效点开发
有新需求或功效点需要开发时, 从最新develop分支中拉出一个feature分支
>> git checkout -b [feature name]
完成feature开发后需要对feature分支进行合并操作
>> git checkout develop
>> git merge [feature name]
3. 处理冲突
当合并分支出现冲突时,需要手动将文件冲突部分进行修改。对修改后文件保留并重新提交。
4. 产品公布
当develop分支已经达成了一个能够公布状态,将最新develop分支拉出来成为一个release分支
>> git checkout -b release
假设需要部分环境配置,新建配置文件并提交
>> git add release.config
>> git commit -m 'release1'
当碰到部分预发环境下bug,这个时候我就直接在release分支下进行修复演进,假如bug问题很大,则需要重新并入develop中,拉出新feature进行开发重构。
假如预发一切正常,需要将release分支同时并入master分支和develop分支,master分支供线上公布,develop分支供下次开发演进。
>> git checkout master
>> git merge [release name]
>> git checkout develop
>> git merge [release name]
5. 线上bug热修复
当碰到部分线上意想不到bug,需要紧急修复时,就直接从master分支拉出hotfixes分支进行修复。
>> git checkout master
>> git checkout -b [hotfix name]
bug修复完成,测试经过后我们将分支合并到master和develop中去。
>> git checkout develop
>> git merge [hotfix name]
>> git checkout master
>> git merge [hotfix name]
五、 远程操作
远程操作5个常见命令
l git clone
l git remote
l git fetch
l git pull
l git push
1. 从远程主机克隆一个版本库
>> git clone <版本库网址>
该命令会在当地主机生成一个目录,和远程主机版本库同名。
2. 管理主机名
为了便于管理,Git要求每个远程主机全部必需指定一个主机名。
不带选项时候,git remote命令列出全部远程主机。
3. 将更新取回当地
>> git fetch <远程主机名>
默认情况下,git fetch取回全部分支(branch)更新。假如只想取回特定分支更新,能够指定分支名。
>> git fetch <远程主机名> <分支名>
git branch命令-r选项,能够用来查看远程分支,-a选项查看全部分支。
取回远程主机更新以后,能够在它基础上,使用git checkout命令创建一个新分支。
>> git checkout -b newBrach origin/master
也能够使用git merge命令或git rebase命令,在当地分支上合并远程分支。
>> git merge origin/master
或
>> git rebase origin/master
4. 取回更新同时合并到当地
git pull命令作用是,取回远程主机某个分支更新,再和当地指定分支合并。
>> git pull <远程主机名> <远程分支名>:<当地分支名>
假如远程分支是和目前分支合并,则冒号后面部分能够省略。
>> git pull origin next
上面命令表示,取回origin/next分支,再和目前分支合并。实质上,这等同于先做git fetch,再做git merge。
>> git fetch origin
>> git merge origin/next
展开阅读全文