美文网首页
实习日记2:git代码管理

实习日记2:git代码管理

作者: JLong | 来源:发表于2020-10-18 11:20 被阅读0次

    mac:brew install git创建

    常用命令:git常用命令及详解

    一、程序员合并代码

    2018年1月中旬,新浪程序员加班合并代码,年会抽中2000股票,因未到现场,损失人民币约77万,77万是该程序猿近3年的工资。

    二、git基本知识与常用操作

    特点:

    分布式

    本地分支与远程分支

    本地分支是远程分支的完整拷贝

    常用操作:

    git init初始化

    git clone克隆,如 git clonehttp://git.do1.com.cn/szzhdj/web.git

    git pull拉取代码

    git status查看工作区代码相对于暂存区的差别

    git add .  将当前目录下修改的所有代码从工作区添加到暂存区 . 代表当前目录

    git commit -m‘注释’ 将缓存区内容添加到本地仓库

    git push origin xxx将本地版本库推送到远程服务器分支, origin是远程主机

    git push -f 表示将目前自己本机的代码库推送到远端,并覆盖

    git push -u   =》git push origin master

    git push origin a_branch:b_branch将本地分支a_branch推送到远程分支b_branch(当本地分支名和远程分支名不一致的时候,需要这样指定推送)

    git branch查看本地分支

    git branch -d xxx 删除分支

    git branch -D xxx强行删除分支

    git branch -m oldbranch newbranch修改分支名称

    git branch -M oldbranch newbranch强行修改分支名称为newbranch

    git checkout xxx切换分支

    git checkout -b xxx  以当前分支版本新建并切换到该分支

    git checkout -b 本地分支名 origin/远程分支名拉取远程分支并切换到该分支

    git merge xxx合并某分支

    git log --author=“author” 可以查找某一个作者所有的提交

    切换源

    三、党建项目中应用

    代码管理三个历程:

    上半年使用svn,下半年开始使用git

    有大概三个月时间代码都提交到主开发分支

    后来需求增加,版本发布频率高,增加了一个devPlus分支

    方案,增加一个中间分支devPlus

    第一:可以让大家的不同的需求和任务提交的代码分支都能测试到。

    第二:让版本发布更加可控。代码直接提交到develop和cdcwxgzh来发布,问题就是,如果我们提交的某个分支出了问题,比如说组织关系转接有问题,但其他人的分支都没问题,将导致版本不能如期发布,需等待全部问题修复才可发布。而有了devPlus,我们的develop是干净的,可以把其他分支合并到develop,忽略组织关系转接发版本。

    如果是旧有bug,基于develop和cdcxgzh分支上改,改完之后合并到devPlus,发布测试验证,测试通过后,把代码提交到develop,因为测试通过后,如果不提交到develop,当devPlus无法发布的时候,那么你修改的bug也会漏掉。

    举个栗子:

    tapd上有一个组织关系转接的bug,ID1004444,还有一个任务【党群活动】增加报名信息采集功能。

    改bug,

    我会拉取develop,我本地会有个develop,我在我本地develop上修改,改好之后,我会合并到devPlus,验证通过后,我会把本地develop提交到远程develop。(注,bug改完之后应该尽快验证)

    git完整操作:

    自动检测

    #在本地基于develop创建的分支拉取远程分支develop

    git pull origin develop

    #改完后,进行本地提交

    git add .

    git commit -m '修改组织关系转接xxxbug'

    #代码合并到devPlus进行测试

    git checkout devPlus # 先切换到devPlus

    git pull origin devPlus  #拉取devPlus

    git merge develop #执行合并

    #代码提交到devPlus

    git status #查看是否有冲突,看到git面板如果有红色的信息,那就是有冲突,需要自己手动解决

    git add .

    git commit -m 'merge develop'

    git push origin devPlus

    #测试通过后,我们还要把代码提交到develop,避免develop遗漏已修改好完的bug

    git checkout devevlop # 先切换到devevlop

    git pull origin devevlop #拉取devevlop

    git add .

    git commit -m '修改组织关系转接xxxbug' 

    git push origin devevlop #提交到develop

    开发新需求,

    我会基于上周发版的分支新建一个分支,在本地建一个分支f_xiaohai_190321_dangqun,开发过程中,我会提交到远程分支f_xiaohai_190321_dangqun,开发完成的时候,我会把它合并到devPlus(切记不要把devPlus合并到f_xiaohai_190321_dangqun),测试。

    到了版本发布的时候,如果devPlus的代码都没有问题,那么就直接发devPlus。如果有问题,f_xiaohai_190321_dangqun合并到develop,发develop。

    git完整操作:

    自动检测

    #创建分支

    git checkout -b f_xiaohai_190321_dangqun 

    #开发后,进行本地提交

    git add .

    git commit -m '【党群活动】增加报名信息采集功能'

    #提交到远程分支

    git push origin f_xiaohai_190321_dangqun  

    #代码合并到devPlus

    git checkout devPlus # 先切换到devPlus

    git pull origin devPlus  #拉取devPlus

    git merge f_xiaohai_190321_dangqun #执行合并

    #代码提交到devPlus

    git status #查看是否有冲突,看到git面板如果有红色的信息,那就是有冲突,需要自己手动解决

    git add .

    git commit -m 'merge f_xiaohai_190321_dangqun'

    git push origin devPlus

    到这里,我们可以理解,devPlus分支承担了测试功能,develop的角色被用来改bug

    为何不能直接合并到主开发分支develop

    场景1:项目进度时间紧迫,导致代码质量无法保证迭代版本质量

    场景2:项目需求迭代日期调整,导致该需求延期迭代

    场景3:同一模块代码多人同时开发,导致无法确认是否存在冲突

    命名规则

    分支类型_开发者_时间_开发内容

    ①  feature分支:f_yourname_20170416_customLimit【新需求的分支】

    ②  bug分支:bug_yourname_20170416_customLimit【bug分支】

    基础分支要基于最近生产版本创建,创建日期也是最近生产版本日期

    四、恢复远程仓库上一个版本

    有的时候,我们可能会误提交了一些不必要的代码,那么我们可以进行回退再提交

    操作步骤:

    1、git  pull origin xxx拉取要恢复的分支

    2、执行恢复:git reset --hard HEAD^(回退到某个版本git reset --hard xxx)

    3、强推恢复后的本地分支到远程分支:git push origin xxx:xxx --force【 --force强推命令应该慎用少用,因为有可能你在push的时候别人也在push,会把别人的代码清理掉】

    回退某一个版本

    git rever thttps://blog.csdn.net/yxlshk/article/details/79944535

    五、发布记录

    为了方便跟踪代码发布情况,现已在【测试环境】发布、构建工程的同时,生成了本次构建的提交记录,可通过页面查看:

    后端-接口服务:http://djdev.qiweioa.cn/publish/changelogs

    前端-后台管理:http://djdev.qiweioa.cn/manager/changelogs.html

    前端-公众号:http://djdev.qiweioa.cn/wxgzh/changelogs.html

    前端-门户:http://djdev.qiweioa.cn/changelogs.html

    前端-政务微信:http://djdev.qiweioa.cn/zwwx/changelogs.html

    后续,在出现发布完没看到想要的效果,可以通过此排查自己是否push了代码,或者构建的分支是否正确。

    六、结语

    事实上,我们可能还会遇到更复杂的情况。

    我们要牢记:

    develop要保持干净,没有通过验证的代码不能推到develop。

    新功能分支不要让devPlus污染,我们的新功能分支应该是合并到devPlus,而不是devPlus合并我们的新功能分支。

    开发的时候明白自己是在哪条分支开发。

    七:git代码图形管理工具

    SourceTree

    八:问题

    解决git pull/push每次都需要输入密码问题

    https://blog.csdn.net/lxhjh/article/details/81169918

    九、速查表

    git config 常用配置选项

    git config -e 编辑配置文件git config --local -e 编辑仓库级别配置文件

    git config --global -e 编辑用户级别配置文件

    git config --system -e 编辑系统级别配置文件

    git config 添加配置项目git config --global user.email “you@example.com”

    git config --global user.name “Your Name”

    十、git提交信息规范

    http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html

    忽略git pre

    https://blog.csdn.net/qq_42833001/article/details/88718349

    git commit --no-verify 

    问题:

    假如,test2分支修改了 一处地方为2;test3分支修改了一处地方为3,test2合并到 master,test3合并到master, 这时候master为3, 那么再次合并test2到master, master这时候是什么

    答案是:3

    原因:

    git是按时间来的,就是 时间后面的覆盖时间前面的,以后面的为准

    test2是在test3之前修改

    所以以test3代码为准

    相关文章

      网友评论

          本文标题:实习日记2:git代码管理

          本文链接:https://www.haomeiwen.com/subject/kkbcrctx.html