300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 项目实战Git团队操作_图形化版本

项目实战Git团队操作_图形化版本

时间:2019-08-27 22:37:57

相关推荐

项目实战Git团队操作_图形化版本

文章目录

一、分支思路1. Git命令常用理解记忆2. 分支换分规则3. 线上发布准备二、 实战前期准备2.1. 在远程仓库创建kernel_system项目2.2. 将远程仓库克隆到本地2.3. 本地准备操作三、场景实战模拟提交3.1. Git合并某个分支的某/多次提交到指定分支3.2. Git合并分支3.3. 回滚/撤销指定某一/多次提交(建议使用,雁过留声、人过留名)3.4. Git合并冲突3.5. Git删除中间某一/多次提交记录和提交的文件3.6. 撤销回滚未未添加至暂存区文件3.7. 回退到以前的指定版本,之后提交的记录和提交的文件全部删除

一、分支思路

1. Git命令常用理解记忆

1.初始化仓库用 git init2.提交用git commit -m"提交说明"3.推送远程用git push origin 本地分支名4.拉取项目用 git clone 项目地址5.回退文件人2种:未提交用git checkout提交后的用git revert6.删除姿势有2步:删除指定提交和提交文件用git rebase 回退到之前的指定提交历史节点,删除之后的提交记录和提交文件用:git reset --hard7.更新项目用git pull8.和远程仓库建立连接:git remote add origin 远程项目地址

2. 分支换分规则

企业git仓库搭建思路:

一般企业根据不同的环境划分为不同的分支,常见的分支划分策略如下:

3. 线上发布准备

一般正式环境发布之前会做这几件事:

二、 实战前期准备

1.在远程仓库创建kernel_system项目2.将远程仓库克隆到本地3.初始化项目,添加一个README.txt文件项目说明4.分别基于master分支,创建local、dev、test分支,分别代表不同的开发或者测试环境,开发/测试/发布只需要切换分支即可。分支对照表:master-生产local-本地开发dev-技术测试test-回归测试分支5.将本地创建的local、dev、test分支推送至远程的版本库

2.1. 在远程仓库创建kernel_system项目

2.2. 将远程仓库克隆到本地

git clone git@:gb_90/kernel_system.git

2.3. 本地准备操作

实现流程:3.初始化项目,添加一个README.txt文件项目说明4.分别基于master分支,创建local、dev、test分支,分别代表不同的开发或者测试环境,开发/测试/发布只需要切换分支即可。分支对照表:master-生产local-本地开发dev-技术测试test-回归测试分支5.将本地创建的local、dev、test分支推送至远程的版本库

#master分支操作cd kernel_systemecho "project desc" >>README.TXTvim README.TXT添加内容:master 分支线上发布分支git push origin master#local分支操作git checkout mastergit checkout -b localvim README.TXT添加内容:local 分支本地开发分支git push origin local#dev分支操作git checkout mastergit checkout -b devvim README.TXT添加内容:dev 分支技术测试分支git push origin dev#test分支操作git checkout mastergit checkout -b testvim README.TXT添加内容:test 分支回归测试分支git push origin test

三、场景实战

模拟提交

zhangsan提交3次,模拟做了3个功能点,lisi提交2次模拟做了2个功能点,wangwu提交2次模拟做了2个功能点

#lcoal 本地分支#zhangsan 提交3次git checkout localecho "1" >> a.txtgit add a.txtgit commit -m"zhangsan 第1次提交"echo "2" >> b.txtgit add b.txtgit commit -m"zhangsan 第2次提交"echo "3" >> c.txtgit add c.txtgit commit -m"zhangsan 第3次提交"#lisi 提交2次git checkout localecho "1" >> 1.txtgit add 1.txtgit commit -m"lisi第1次提交"echo "2" >> 2.txtgit add 2.txtgit commit -m"lisi第2次提交"#wangwu 提交2次git checkout localecho "1" >> h.txtgit add h.txtgit commit -m"wangwu 第1次提交"echo "2" >> j.txtgit add j.txtgit commit -m"wangwu 第2次提交"查看所有的提交记录:git log --pretty=oneline --abbrev-commit

3.1. Git合并某个分支的某/多次提交到指定分支

紧急发布变更:zhangsan的3个功能点和lisi的2个功能点都要发布测试,wangwu的2个功能点暂时不发布。明确要做的事情:zhangsan和lisi的5个功能点从local分支要发布到dev分支去申请技术测试。应该如何操作呢?方案1((建议使用,这样不会出错):正常流程,在dev分支,将zhangsan的3次提交和lisi的2次提交,合并到dev分支即可。需要合并5次提交,因为每一次提交就是一个功能点,一条合并提交命令即可。

合并前截图:

方案1:在lcoal分支上查看所有的提交记录,等会我们会用到提交<commitId>进行合并提交处理git log --pretty=oneline --abbrev-commitgit checkout devls# Git合并某个分支的某/多次提交到指定分支git cherry-pick 26844fb 9abaf33 3e46869 a03beb1 9240aef

3.2. Git合并分支

前提:基于dev技术测试环境已经把zhangsan、lisi、wangwu的功能测试没问题大版本发布变更:zhangsan的3个功能点、lisi的2个功能点以及wangwu的2个功能点都要发布回归测试。明确要做的事情:zhangsan和lisi的5个功能点从local分支要发布到dev分支去申请技术测试。应该如何操作呢?方案1((建议使用,这样不会出错):正常流程,在dev分支,将zhangsan的3次提交和lisi的2次提交,合并到dev分支即可。需要合并5次提交,因为每一次提交就是一个功能点,一条合并提交命令即可。

案例演示:这里刚才已经dev上有zhangsan、lisi的的5个功能点了,只要把wangwu的2个功能点,从local分支合并到dev即可git cherry-pick a52cf77 de17f44在dev分支上查看所有的提交记录,等会我们会用到提交<commitId>进行合并提交处理git log --pretty=oneline --abbrev-commit切换到test分支,把dev分支上zhangsan、lisi、wangwu的7次提交合并到test分支git checkout testgit cherry-pick 6b0aa2f 8bbaf28 bf697f7 877d827 08d24a0 4297a8d efbaa86

方案2:前提:以前dev分支和test代码都是一样的,只是在dev分支上新增的这7次提交,在test分支是没有的。在这种场景下,直接合并分支即可,换言之,把dev分支合并到test'分支git checkout testgit merge dev

3.3. 回滚/撤销指定某一/多次提交(建议使用,雁过留声、人过留名)

回滚/撤销指定某一/多次提交(建议使用,雁过留声、人过留名)撤销回滚已经提交的文件

背景:在dev分支上,zhangsan、lisi、wangwu一共有7次提交。但是,在打包编译的时候发现,zhangsan、lisi、wangwu将在本地测试好的代码从local分支合并到dev分支后,编译出现错误,经过查看由于wangwu同事在我不知情的情况下,由于wangwu的2次错误提交导致的。因此,和wangwu说明zhangsan、lisi的功能属于紧急发布着急上线,于是,在和wangwu协商后,决定将wangwu的2次错误提交记录进行回滚/撤销。待zhangsan、lisi他们功能上线后,wangwu再将2次错误的提交在local修改后,重新合并到dev分支,重新编译打包,进行发布技术测试环境。

#执行原则:只要撤销C提交修改即可#1.找到要回滚/撤销的提交的<commitid>git log --pretty=oneline --abbrev-commit#2.撤销wangwu的4297a8d efbaa86 提交git revert 4297a8d efbaa86执行上面命令后,会进入2次命令窗口(提交记录/1次),让你添加回滚指定提交的简要说明,默认,按esc :wq保存即可回滚之后,可以看到wangwu的2次提交(4297a8d efbaa86)记录还有,但是,2次提交文件都回滚了(从dev分支消失了)。同步远程分支git push origin dev

3.4. Git合并冲突

git默认自动帮我们合并的,但是也是有前提的。假设:在dev分支上有一个README.TXT文件,内容如下:企业项目实战Git团队操作dev 分支 技术测试环境在test分支上有一个README.TXT文件,内容如下:企业项目实战Git团队操作test 分支 回归测试分支如果这个文件的内容,都不在统一行,git会自动帮我们冲突合并。但是假设:dev分支上的README.TXT文件的“dev 分支 技术测试环境” 这句话在第2行test分支上的README.TXT文件的“test 分支 回归测试分支” 这句话README.TXT文件也在第2行在test分支执行git merge dev,这样就会出现版本冲突,如果不显示,你在执行切换分支操作时就是提示你。如下:Administrator@PC-11062145 MINGW64 ~/Desktop/kernel_system (test|MERGING)$ git checkout deverror: you need to resolve your current index firstREADME.TXT: needs merge

解决方案:

解决冲突即可:vim README.TXT编辑前内容如下:企业项目实战Git团队操作master 分支 线上发布分支<<<<<<< HEADtest 分支 回归测试分支=======dev 分支 技术测试环境>>>>>>> dev有3种解决方案方案1:dev那句话和test那句话 都保存方案2:删除dev那句话保存test那句话方案3:删除test那句话保存dev那句话这个就要根据实际需求而言了,这里我选择方案1(都保存)进行演示:解决冲突后文件的内容如下:企业项目实战Git团队操作master 分支 线上发布分支test 分支 回归测试分支dev 分支 技术测试环境git add README.TXTgit commit -m"merge dev"

3.5. Git删除中间某一/多次提交记录和提交的文件

Git删除中间某一/多次提交记录和提交的文件

(明确风险后,执行操作,这次作用于特殊情况下)

代码更新发现编译出错,后来发现其他人的一次代码提交导致的,并且修改量很大,不好恢复成原来的,就想把这笔提交删除掉,不影响工作。

具体步骤:#1.首先git log查看提交记录,找到出错的前一笔提交的commit_id#2.用命令git rebase -i commit_id ,查找提交记录#3.将出错那笔提交的pick改为drop#4.Esc,:wq#5.同步远程仓库(注释本地和远程文件及提交记录是不一样的,在明确风险的情况下,因此采用强退)git push -u -f origin master完成!

案例浮现:背景:在test分支上,zhangsan、lisi、wangwu一共有7次提交。但是,在打包编译的时候发现,zhangsan、lisi、wangwu将在本地测试好的代码从local分支合并到dev分支后,编译出现错误,经过查看由于wangwu同事在我不知情的情况下,由于wangwu的2次错误提交导致的。因此,和wangwu说明zhangsan、lisi的功能属于紧急发布着急上线,于是,在和wangwu协商后,决定将wangwu的2次错误提交记录和提交的文件进行删除。待zhangsan、lisi他们功能上线后,wangwu再将2次错误的提交在local修改后,重新合并到dev分支,重新编译打包,进行发布技术测试环境。

git checkout test#找到删除的指定提交<commitid>git log --pretty=oneline --abbrev-commitgit rebase -i 8743310

3.6. 撤销回滚未未添加至暂存区文件

撤销回滚未未添加至暂存区都使用 git checkout

撤销工作区已经修改但是尚未添加至暂存区的文件恢复

git checkout .

如果,只想恢复a.js

git checkout a.js

这样就可以恢复到修改前之前的a.js的状态

3.7. 回退到以前的指定版本,之后提交的记录和提交的文件全部删除

回退到以前的指定版本,之后提交的记录和提交的文件全部删除

git reset --hard 指定回退的提交的<commitid>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。