测试知识体系三

112 阅读6分钟

转载:测试开发知识图谱 - 掘金 (juejin.cn)

3 git 代码管理

名称相关知识点
3.1 常用命令commit、merge、rebase、push
3.2 分支管理gitflow流程简介

3.1常用命令

git init                                     # 初始化本地git仓库(创建新仓库)
git config --global user.name "xxx"              # 配置用户名
git config --global user.email "xxx@xxx.com"      # 配置邮件
git clone git+ssh://git@192.168.53.168/VT.git    # clone远程仓库
git status                               # 查看当前版本状态(是否修改)
git add xyz                              # 添加xyz文件至index
git commit -m 'xxx'                        # 提交
git rm -r *                              # 递归删除
git log                                 # 显示提交日志
git log -1                              # 显示1行日志 -n为n行
git show commitId                         # 显示某个提交的详细内容
git tag                                 # 显示已存在的tag
git diff HEAD^                           # 比较与上一个版本的差异
git branch                               # 显示本地分支
git branch --contains 50089                 # 显示包含提交50089的分支
git branch -a                            # 显示所有分支
git branch --merged                       # 显示所有已合并到当前分支的分支
git branch --no-merged                     # 显示所有未合并到当前分支的分支
git branch -m master master_copy            # 本地分支改名
git checkout v2.0                         # 检出版本v2.0
git merge origin/master                    # 合并远程master分支至当前分支
git push origin master                     # 将当前分支push到远程master分支
git push --tags                           # 把所有tag推送到远程仓库
git fetch                                # 获取所有远程分支(不更新本地分支,另需merge)
git pull origin master                     # 获取远程分支master并merge到当前分支
git mv README README2                      # 重命名文件README为README2
git reset --hard HEAD                       # 将当前版本重置为HEAD(通常用于merge失败回退)
git ls-files                               # 列出git index包含的文件
git show-branch                             # 图示当前分支历史
git show-branch --all                        # 图示所有分支历史

3.1 gitflow流程简介

Git Flow 的常用分支

  • 生产分支(master) ‌ Master分支是仓库的主分支,这个分支包含最近发布到生产环境的代码,最近发布的Release, 这个分支只能从其他分支合并,不能在这个分支直接修改‌

  • 补丁分支(hotfix) ‌ 当我们在生产环境发现新的Bug时候,我们需要基于master分支创建一个Hotfix分支,然后在Hotfix分支上修复bug,完成Hotfix后,我们要把hotfix分支合并回Master和Develop分支‌

  • 发布分支(release) ‌ 当你需要发布一个新功能的时候,要基于Develop分支创建一个Release分支,在Release分支测试并修复bug,完成release后,把release合并到master和develop分支‌

  • 开发分支(develop) ‌ 这个分支是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支‌

  • 功能分支(feature) ‌ feature分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release‌

git flow的具体使用

当我们新建git仓库之后,默认会创建一个主分支也就是master分支,由于master分支是用于发布生产环境,所有必须保证master上代码的稳定性,所以我们不能直接在master分支上修改提交。我们要基于master分支创建一个develop分支,develop分支用于保存开发好的相对稳定的功能,master分支和develop分支是仓库的常驻分支,一直会保留在仓库中

当新的开发任务来了之后,就要编写代码了,我们尽量不要在develop分支上写代码,要保证develop分支的相对稳定,所以这时我要就要基于develop 分支创建一个临时的开发分支,然后在开发分支上编写代码,等功能开发完之后我们再把开发分支合并到develop上

新功能合并到develop分支之后,我们想把新功能发布到生产环境,首先基于develop分支创建release分支,然后在release分支测试完成之后,把release分别合并到master分支和develop分支

release分支合并到master分支之后,在master分支上打标签用于发布:

我们把代码发布到了生产环境,用户在使用的时候给我们反馈了一个bug,这时我们需要基于master分支创建一个hotfix 分支,用于修复bug,bug修好之后,把hotfix 分支分别合并到master分支和develop分支

①将本地代码上传到远程仓库

1.登录coding,新建一个仓库,点击代码浏览可以看到

2.在本地新建一个文件夹,作为项目根目录,再此启动 Git Bash ,进入目录,并输入

 git init //初始化一个本地git仓库

3.将本地仓库和我们在coding上创建的远程仓库对接起来,输入

git remote add *yourname* *git_url*

add 后面输入你的仓库名字,自定义。git_url代表你的git地址,这里我命名为origin

git remote add origin *url*

回车成功后可以输入

git remote -v

4.为了我们的代码是最新的状态 和 提交时不会产生冲突,我们先执行下pull操作,将远程仓库最新代码拉到我们本地来,输入

git pull origin master

(origin就是我们上面设置的仓库名,master代表主分支,你可以把分支理解为一块区域,我们最终编写完成的代码都要整合到master分支里面去。然后,我们还可创建一些其他分支,去保存我们正在编写中,或者尚未测试的代码。)

5.接下来我们来模拟写代码并上传到远程仓库去。 我们新建一个 a.js文件,并编辑一些内容进去。首先将a文件添加到暂存区

git add a.js

(add后面可以带多个文件名字,用空格隔开;或者输入 . 代表全部)

然后再提交到本地仓库中去

git commit -m "first commit" 

-m 后面接的是备注内容,这里我备注为“第一次提交”,回车后成功会看到提示消息

6.然后我们需要把它push到远程仓库中去。输入

git push origin master

②分支的使用

mster代表主分支,最终的代码都整合到这里面去

1.首先查看当前分支

git branch -a

-a代表查看本地和远程的分支,此时我们看到都只有一个master分支

2.新建分支dev

git checkout -b dev

-b代表同时切换到dev分支下面去,这时你可以再去查看分支

3.然后我们重新写一个b.js文件,再执行add,commit,最后push

git add b.js

git commit -m "dev"

git push origin dev

注意push时要到dev分支 成功后我们去coding看已经有了dev,并且dev下有b.js,而master没有b.js

master:

我们可以再去看看分支情况,

git branch -a

此时已经有了两个分支,且当前位于dev分之下 切换分支可以用 git checkout [branch-name]

③整合分支

1.切换本地分支到master

git checkout master

2.将远程仓库的最新代码pull下来!!因为期间其他人可能已经提交代码到远程master了,所以你首先得更新下自己本地的master代码

git pull origin master

3.然后再把本地的dev代码整合到master,输入

git merge dev

merge整合操作,把dev整合到当前分之下(当前分支为master)。会提示增加了东西

4.由于当前的东西已经在本地仓库里面了,所以最后我们再执行push,到远程仓库的master

git push origin master

成功后你可看到,master下已经有b.js文件了