发布正式服后,打版本主流程(7步)
针对自己负责的端,在第二天无bug后做版本维护,具体操作如下:
1.检查本地是否有代码未提交 (询问同组开发人员是否都提交)
git status
2.更新最新代码 简单review合并内容
git pull
清除代码log,检查代码是否有临时代码,是否有调试代码,代码完整性,独立性
3.跟产品确认当前版本号 如:v4.10.0,并修改当前代码版本号,并提交
git branch -a (检查版本号是否有重复)
npm version v4.10.0 (此步骤效果相当于 修改package,package.lock版本号,并add,commit)
git push (直接提交版本号commit)
4.新建release版本或新建tag
如果只是小功能迭代,可以不新建版本 ,只建个tag即可
bug修复不需要建版本,如果是重要程度的公共基础bug修复可以考虑打tag
新建release版本
git checkout -b release/v4.10.0
git push --set-upstream origin release/v4.10.0
新建tag
git tag -a v4.10.0 -m "本次版本的大致内容总结"
如:git tag -a v4.10.0 -m "gov农场详情页对接第三方设备,移除零售价等小修改"
git push origin v4.10.0
5.合并代码到主分支 (包括develop,master等),有其他正在开发分支也需合并(最好群里询问下)
git checkout develop //先切到想合并的分支
git pull //拉一下分支代码
git merge release/v4.10.0 --no-ff -m "合并v4.10.0代码,合并的迭代简短描述"
merge后 注意是否有冲突,谨慎处理,不是自己的代码一定要更书写者一起商讨!!!
(取消merge git merge --abort)
git push
代码一定要合并到 develop,master, 正在开发的其他分支上(具体哪些分支可群询问,某些特殊分支不需要合并除外)
重点注意 群询问当前端是否有其他正开发分支,一定要注意合并上去!!!
6.删除无用的临时开发分支 如:feature/** 或develop/***分支(本地和远程)
git branch --delete feature/v4.4.0 //删除本地分支
git push origin --delete feature/v4.4.0 //删除远程分支
删除分支要慎重,不要删除了 最好复制分支名
7.合并代码后前端开发群里,通知下开发分支同学注意更新
并部署到对应开发分支,并通知对应后端负责人
各组分支名称 规则
一组 feature/shanghai-迭代号 feature/shanghai-49
二组 feature/jingyang-迭代号
三组 feature/jingfeng-迭代号
物联网 feature/wulianwang-迭代号
发布后的bug修改 直接在release/v4.38.0 ,
改完bug后,一定注意合并到主分支和开发分支!!!
改完bug后,一定注意合并到主分支和开发分支!!!
改完bug后,一定注意合并到主分支和开发分支!!!
git 版本原则
master/main和develop 是长期维护主分支 不可删除
haier_** 分支不可以删
不是自己新建的分支不可以删
新的版本迭代 要从develop 基础上新建分支开发,并确认版本号
git checkout -b feature/v4.11.0
发布正式服后 又发现了新bug
如果还没有打版本,可直接在feature/v4.10.0开发分支上开发,改完后打版本等操作
如果已经打了版本了如:release/v4.10.0 ,直接在这个版本上开发,注意开发完合并 到 develop,master
其他技巧
git reset --hard origin feature/v4.10.0 强制更新到线上某版本
合并其他分支的commit git cherry-pick -n commitID (把commit添加到 暂存区,工作区)
push提交后 想撤销上一次提交
reset 直接撤销不留下上一次提交记录 (撤销完就真的找不到了 有需要最好本地复制一份)
git reset --hard HEAD^ (第二次 HEAD~2 ...)
git push origin HEAD --force (强制push)
revert 撤销还留下上一次提交记录,且还会留下撤销记录
git revert HEAD 撤销前一次 commit
git revert HEAD^ 撤销前前一次 commit
git revert commitId
git revert 和 git reset的区别
-
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
-
在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
-
git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
撤销当前未push的commit,回到暂存区状态,工作区代码保留
git reset --soft HEAD^
手头没开发完 不想提交 缓存下代码
存 git stash save "save message"
恢复
git stash list 先看下想恢复的序号
git stash apply stash@{1} //应用缓存 (暂存记录还保留着)
git stash pop stash@{1} //应用缓存 且删除记录
(如果想恢复的是最新的 git stash pop)
git stash clear :删除所有缓存的
关于tag 其他操作
git tag //查看tag
git tag -a tagName -m "tag说明" //在某个版本上打一个tag
git tag tagName c809ddbf8 //在某个commit 上打tag
git push origin tagName //本地tag推送到线上
git tag -d tagName //本地删除tag
git push origin :refs/tags/tagName //删除线上tag (本地tag删除了,再执行该句)
如果别人把你的代码覆盖了怎么办
1.备份全部代码
2..找到合并前commit,并切过去 git reset --hard commitId 然后新建分支
3.在新分支里把 备份代码覆盖上来,逐一确认,哪些可修改,改好后提交,拷贝整改后代码
4.切回开发分支,把整改后代码覆盖上去,并提交,完成