• 微信:
  • hai764003
  • QQ:
  • 511211014
  • E-mail:
  • jaquery@163.com

案例总数51

访问总数312232

收藏总数310763

Git开发流程返回列表

上传时间:2018-09-20 内容关键字:Git,Git开发流程,Git开发

1、分支策略相关

  • online分支对应线上
  • sim分支对应web6
  • test分支对应test1
  • master分支作为online的备份
  • feature/xxx 作为功能子分支

建议个人新建分支起名以feature/jira 为准,如无jira,可以以名字feature/hepeng为主。 获取最新数据是从master分支获取。


2、新建分支

新建分支不建议本地分支直接push到远程。建议如下操作:

先在公司gitlab上基于 online 分支创建新分支 feature/XXX (一定要从online新建,XXX一般用JIRA号)


然后在本地项目中拉取并创建远程分支:

git fetch origin +feature/XXX:feature/XXX

切换到新分支:

git checkout feature/XXX

3、在pull的时候出错

看提示有本地修改未提交的东西,提示你可能会覆盖(override)

这时候你可以根据情况:

  • 选择git add + commit,把你修改的代码保存了;
  • 选择git checkout file 还原文件修改。

4、pull或merge时候文件冲突

使用git status提示 both modified的文件列表就是冲突的文件,vi进入冲突文件修改包含“<<<” “>>>”的地方解决冲突,

最后把冲突文件git add 然后再git commit

git不能删除文件重新pull,区别于svn

5、上test步骤

上test,就是把自己的分支合并到远程test分支。建议操作如下

首先add/commit你的所有修改数据,并push到自己的分支上,如feature/hepeng

然后在gitlab上发起一个merge request,把feature/hepeng merge到test (建议有这个记录)

然后在本地代码切换到test分支 git checkout test

更新test的数据为最新(注意更新时候会不会报错或有冲突,先解决) git pull origin test

下载自己的最新数据到本地远程 git fetch origin feature/hepeng

合并数据 git merge FETCH_HEAD

把所有数据push到test git push origin test

Done!

上web6和上线请到gitlab操作 在gitlab中 new merge request from feature/XXX to sim/online 授权人写:张少飞,然后等待操作接口。

6、push分支有问题

(1)push分支在fast下必须是和你当前分支对应的分支


如你当前本地分支是test,push远程也只能push到test


(2)push时候不成,因为你版本不是最新,需要先pull或fetch+merge。

(3)push不成功可能是你没权限

7、代码暂存和取出

情况1:你在一个分支上做了一些修改,突然发现你所在的分支是test分支,你应该在feature/XXX分支操作

情况2:你正在做修改,突然有个紧急bug要fix,你不想commit再切换分支

这个时候你可以先把修改放入暂存区,然后do some job,或者切换到其他分支,最后取出你的修改到当前分支,操作如下:

git stash 存入暂存区


(do some job or git checkout feature/XXX 。。。)


git stash pop 取出


你也可以存入多个暂存区,通过git stash list 查看,通过git stash apply stash@{1}指定还原。

8、git fetch,pull

git pull == git fetch + git merge

git fetch 就是把线上分支拉取到本地远程,具体有几种写法

git fetch origin 把所有的origin远程分支都拉取到本地远程,并且名字一一对应。

git fetch origin feature/xxx 把feature/xxx分支拉取到本地远程,并且FETCH_HEAD指向它

git fetch origin feature/xxx:yyy 把feature/xxx分支拉取到本地远程,命名为yyy

git branch -av 查看所有的本地分支和本地远程的分支,根据情况进行合并

9、常用的命令讲解

  • git add xx 添加文件
  • git rm xx 删除文件。 替代物理删除文件,然后提交
  • git add path --all 针对物理删除后的添加
  • git commit -m 'xx' 备注是必须的。提交时会提交所有add,rm的数据。
  • git status查看你将会提交的Changes to be committed,未提交的,以及未被tracked的
  • git reset HEAD xx 如果某个文件被add了,但是不想提交可以恢复
  • git fetch origin 拉取线上所有分支
  • git fetch origin xxx:yyy 拉取线上某个分支
  • git merge xx合并本地分支
  • git merge origin/xx 合并某个fetch的分支
  • git pull origin xxx 拉取分支并合并
  • git checkout xx 切换到某个分支
  • git checkout -b xx 新建某个分支并切换过去
  • git branch -av 查看所有本地分支+远程分支及对应版本号
  • git diff xxx 查看文件改动
  • git log xxx 查看文件变动日志
  • git branch -D xxx 删除本地分支

10、多人协助操作步骤

  • 10.1根据jira任务,在gitlab上基于master创建新的分支:如开发新建分支为feature/JZ-test
  • 10.2根据远程分支创建本地远程跟踪分支:git fetch origin feature/JZ-test
  • 10.3相关开发开发人员基于gitlab上新建的分支创建本地分支:如git branch feature/JZ-test origin/feature/JZ-test
  • 10.4切换到新建的本地分支:git checkout feature/JZ-test
  • 10.5开发人员每天开发之前,执行git branch 或 git status,确认当前分支为自己所要开发的分支
  • 10.6从远程分支拉取代码到本地远程分支:git fetch origin feature/JZ-test
  • 10.7.讲本地远程分支合并到本地分支:git merge FEATCH_HEAD
  • 10.8更新online本地远程分支:git fetch origin online
  • 10.9将online分支合并到本地分支:git merge FEATCH_HEAD
  • 10.10将更新后的代码推到远程分支:git push origin feature/JZ-test


11、代码回滚

it代码库回滚: 指的是将代码库某分支退回到以前的某个commit id

【本地代码库回滚】:
git reset --hard commit-id :回滚到commit-id,讲commit-id之后提交的commit都去除
git reset --hard HEAD~3:将最近3次的提交回滚
【远程代码库回滚】:
这个是重点要说的内容,过程比本地回滚要复杂
应用场景:自动部署系统发布后发现问题,需要回滚到某一个commit,再重新发布
原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支
操作步骤:
11.1、git checkout the_branch

11.2、git pull

11.3、git branch the_branch_backup //备份一下这个分支当前的情况

11.4、git reset --hard the_commit_id //把the_branch本地回滚到the_commit_id

11.5、git push origin :the_branch //删除远程 the_branch

11.6、git push origin the_branch //用回滚后的本地分支重新建立远程分支

11.7、git push origin :the_branch_backup //如果前面都成功了,删除这个备份分支

 

小海哥推荐你看: 博客园  php教程分享网站  phpmywind  脚本之家