实习时组里的git使用规范:
开发流程:
1、 独立开发新功能,对其他业务不产生影响
(1) 从master拉代码到个人开发分支,比如个人分支为:dev_xjy
(2) 开发测试完成后,从master再拉一次代码,如有冲突在自己的开发分支解决
(3) 合并自己开发分支到master
(4) 从release分支merge到master
(5) 集成测试通过后, 用compare工具比较master和release的代码差异,确定差异代码都为需要发布内容
(6) 升级版本,打tag,把master分支merge到release分支
整体的大致使用过程为:
所以基本的操作流程就是:
1.自己新建一个自己的分支,如命名:dev_xjy
#创建自己的分支
git branch 分支名
#查看本地分支
git branch
#查看远程分支
git branch -r
#查看所有分支,当分支较多显示不完时,此时按q即可退出
git branch -a
命令参考:https://www.cnblogs.com/mmykdbc/p/9076063.html
命令参考:https://blog.csdn.net/riemann_/article/details/88984296
命令参考:https://blog.csdn.net/weixin_39634878/article/details/111216034
2.将master分支代码拉取到dev_xjy分支进行开发
将远程仓库指定分支拉取到本地:
git clone -b 分支名 仓库地址
https://www.cnblogs.com/ants_double/p/11088882.html
https://www.cnblogs.com/feipeng8848/p/12033802.html
#根据已有远程分支创建一个本地分支
git checkout -b 本地新分支名 origin/远程分支名
执行完后,命令行会提示:
Switched to a new branch 'dev_xuanjunyu'
Branch 'dev_xuanjunyu' set up to track remote branch 'master' from 'origin'.
并且我们查看idea右下角的分支时,会看到本地分支的后方说origin/master。
那么Branch 'dev_xuanjunyu' set up to track remote branch 'master' from 'origin'
含义就是:本地dev_xuanjunyu
分支与远程的master
分支是建立联系的,如果我们提交代码的话,会直接提交到master
。而实际上我们需要的是将dev_xuanjunyu
与远程的origin/dev_xuanjunyu
分支建立联系。所以需要执行下述操作:https://blog.csdn.net/weixin_43632687/article/details/104790595
即执行:
#设置本地分支追踪远程分支
git push --set-upstream origin <new_branch>
#也就是
git push --set-upstream origin dev_xuanjunyu
设置好后,控制台会显示:Branch 'dev_xuanjunyu' set up to track remote branch 'dev_xuanjunyu' from 'origin'.
即操作成功!
此时查看idea右下角的分支时,会看到本地分支的后方说origin/dev_xuanjunyu
。
当设定好track分支后,比如本地dev_xuanjunyu
分支track
远程的origin/dev_xuanjunyu
分支,那么提交代码可以直接通过命令:git push
,拉取代码直接通过:git pull
。
否则的话,拉取分支需要通过如下命令:
#比如将远程master分支拉取到本地dev_xuanjunyu分支,切换至本地dev_xuanjunyu分支,然后执行下述命令:
git pull origin master
#或者
git pull origin/master
#上述内容同git push
3.开发完成后你可以发布dev_xjy分支的代码到fat环境进行测试
4.测试若没问题后,再拉取一次master分支,因为在你开发的过程中master分支可能有代码更新,然后再将你自己的dev_xjy分支合并到master分支即可
如何将dev_xuanjunyu分支的代码合并到remote的master分支,即origin/master分支?
5.之后若要发布的话,将master分支合并到Release_CD分支进行最终发布即可!
删除一个本地分支:
#先切换到到其他分支,然后执行下述命令
git branch -d [想要删除的分支名称]
本地dev分支拉取远端master分支的内容
记住,本地dev
分支拉取远端master
分支的内容时,应该执行的步骤是:
1.本地切换到master
分支,然后执行拉取操作,以更新本地master
分支
#位于本地master分支执行下述命令
git pull
2.本地切换到dev
分支,再执行从本地master
分支合并到本地dev
分支的操作:
#位于本地dev分支执行下述命令
git merge master
上述过程可以实现将远程master
分支更新到本地dev
分支的操作!
值得注意的是:在merge master分支之前,最好先将dev分支内的修改提交,否则merge的时候会提示:Your local changes to the following files would be overwritten by merge:xxxx.java
Please commit your changes or stash them before you merge.
并且,当你再次从本地dev
分支提交代码到origin/dev
分支时,会将从master
分支合并过来的更新的内容也一同提交到你的origin/dev
分支上去。
清空备份文件
当在项目中进行了某些操作之后,比如修改pom文件的版本号,此时会产生相应的backup文件以保存原本的版本号,而又不想把这些backup文件提交到远端仓库,所以可以使用以下命令删除掉这些不用commit的文件:
# -f指的是force,即强制删除
git clean -f
将本地dev分支合并到远程的master分支
下述操作均在master分支进行:
# 1.将dev分支的代码合并到master上
git merge dev
# 2.将本地master分支的更改推送到远程的master分支上
git push origin master
执行完以上命令,此时dev分支与master分支的代码已同步。
merge分支的时候冲突解决方案
比如dev分支在merge master分支的时候,可能有冲突,如果你事先不知道有冲突,并且使用命令行merge的:
#dev分支下执行下述命令
git merge master
那么之后命令行中可能会提示你需要先解决掉冲突才让你merge,这个时候,你可以使用idea的右下侧分支项中的一个选项,就是”中断merge操作“,之后就不要再用命令行merge了。
推荐是用idea自带的merge操作:
因为使用idea自带的merge操作如果有冲突的话,它会把冲突的地方给你展现出来,然后让你选你是接受你自己分支的还是merge进来的新分支的。
本地修改不提交的情况下拉取远程分支新更新内容
简答来说就是执行下述的两条命令:git stash
、git stash pop
1.执行完git stash
后首先将本地修改内容添加入栈。
2.执行完git stash
后就可以通过执行git pull
命令来拉取远程分支新更新内容了
3.拉取远程分支新更新内容后,需要从栈中弹出之前修改过的内容,执行git stash pop
命令即可
4.执行git stash pop
命令后需要手动解决冲突问题!
具体可参考:值得反复观看的文章中的第4篇