社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

【效率】如何用Git来规范化开发自己的模型

机器学习初学者 • 4 月前 • 103 次点击  

本文由博主Hubery_Jun提供,点击阅读原文即可跳转。

1. 流程

  • develop 开发分支:开发人员每天都需要拉取/提交最新代码的分支
  • test 测试分支:开发人员开发完并自测通过后,发布到测试环境的分支
  • release 预发布分支:测试环境测试通过后,将测试分支的代码发布到预发环境的分支(这个得看公司支不支持预发环境,没有的话就可以不采用这条分支)
  • master 线上分支:预发环境测试通过后,运营/测试会将此分支代码发布到线上环境
  • hotfix 分支:在 master 发现新的 bug 时,需要创建一个 hotfix,完成后,合并到 masterdevelop 分支

大致流程

  • 开发人员每天都需要拉取、提交最新的代码到 develop 分支
  • 开发完毕后,开始 集成测试,测试无误后提交到 test 分支,并发布到测试环境,交由测试人员测试
  • 测试环境通过后,发布到 release 分支上,进行预发布环境测试
  • 预发环境通过后,发布到 master 分支上并打上标签 tag
  • 如果线上分支出现 bug,这时开发者应该基于预发布(没有预发布环境就用 master 分支),新建一个 bug 分支用来临时解决 bug,处理完成后申请合并到预发布分支(好处是不会影响正在开发中的功能)

1.1 克隆指定分支

场景:要求使用非master分支(如next分支)进行开发

git clone -b next “git地址”

1.2 优雅的在分支上开发

1)克隆到本地的分支为  next 分支,但是不能直接在上面开发,而是需要另外创建分支:

# 创建并切换到新的分支 next-dev,其中 add_login 为分支说明(可不加)
git checkout -b next-dev/add_login 

2)在 next-dev 分支上开发完后, 将代码提交到本地仓库:

git add . # ".“的意思就是保存添加所有修改到暂存区
git commit -m “注释”  # 暂存区中的修改提交到本地仓库,commit 规范可参考 6.1 commit 规范

3)将 next-dev 分支合并到 next 分支:

# 先切换到 next 分支
git checkout next # 切换之前一定要先执行第二步

# 从远端拉取最新的代码,当你合并分支的时候,可能其他同事又提交了新的内容,所以最好先拉取一次最新的代码
git pull origin next

# 合并(如果合并发现有冲突,可以使用可视化工具查看冲突的代码,如:pycharm、BCompare4
git merge next-dev

# 将本地代码推送到远程
git push origin next:next # ”:“前面的是本地分支的名字,”:"后面的是远程分支的名字

注意:合并之前先 commit,合并之前先 git pull

2. 常用命令

# ssh 方式需要配置 SSH Key,https 需要每次都输入用户名和密码
cd /d/python-code/
$ git clone git@github.com:wangy8961/flask-vuejs-madblog.git
    
git init # 初始化本地仓库
git status # 查看状态
git add . # 添加到暂存库
git commit -m 'xxx' # 提交
git push -u origin master # 推送到远端

git remote add origin “HTTPS地址”  # 关联远程仓库

# 从远端拉取最新代码到本地
git pull  # 自动合并
git fetch  # 不合并

# 分支
git checkout -b feat/add-artical # 创建新的分支 feat,并切到新分支,add-artical 为对这个分支的描述
git branch -d dev # 删除 dev 分支

3. 拉取最新代码

# 查看已关联的仓库
$ git remote -v
origin  https://gitee.com/hubery_jun/flask-vuejs-madblog (fetch)
origin  https://gitee.com/hubery_jun/flask-vuejs-madblog (push)

# 类似于 git pull,也是用于拉取最新代码
$ git fetch
# 或拉取指定的远程主机上的分支,如 origin 上的 master
$ git fetch origin master

git fetch 与 git pull 的区别

  • git fetch
    • 远端跟踪分支:可以更改远端跟踪分支
    • 拉取:会将数据拉取到本地仓库,但是不会自动合并或修改当前的工作
    • commitID:本地库中 mastercommitID 不变,还是等于 1
  • git pull
    • 远端跟踪分支:无法对远端跟踪分支操作,必须先切回到本地分支然后创建一个新的 commit 提交
    • 拉取:从远处获取最新版本,并合并到本地,会自动合并或修改当前的工作
    • commitID:本地库中 mastercommitID 发生改变,变成了 2

用法

1、git pull

git pull  :
    
# 将远端主机 origin 的 master 分支拉下来,与本地 dev 分支合并,若未指定本地分支(那么将与本地当前分支合并)
git pull origin master:dev
    
# 用 git fetch 表示
git fetch origin master:dev
git merge dev

2、git fetch

# 方法一
git fetch origin master # 从远端 origin 仓库的 master 分支拉取最新代码
git log -p master.. origin/master # 比较本地的仓库和远端仓库的区别
git merge origin/master # 将远端拉取的最新代码合并到本地仓库,远端和本地的合并

# 方法二
git fetch origin master:temp # 从远端 origin 仓库的 master 分支拉取最新代码到本地并在本地创建一个新的分支 temp
git diff  # 比较 master 分支和 temp 分支的不同
git merge temp # 合并 temp 分支到 master 分支
git branch -d temp # 删除 temp 分支

注意:git fetch 更安全也更符合实际要求,可以在合并前,先查看更新情况,根据实际情况再决定是否合并

4. git push 常用用法

一般形式:

git push    

# origin 为远程主机名,将本地 next 分支推送到远程 next 分支
git push origin next:next

省略远程分支:

# 表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
git push origin master

如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master

git push origin :refs/for/master 

如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到 origin 主机的对应分支 :

git push origin

如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用 git branch -r ,查看远程的分支名:

git push

5. 分支管理

git checkout -b dev  # 创建并切换到分支
git branch -d dev  # 删除分支
git branch   # 查看当前分支

6. 代码提交

添加到存储库、合并分支

git add .  # 添加所有
git commit -m 'xxxx' # 提交
git checkout master  # 切换到主分支
git merge dev  # 合并 dev 分支到 master 主分支
git branch -d dev # 删除 dev 分支
git branch  # 查看当前分支

commit 规范

commit 的内容也应该遵守规范,一般来说是

  • fix:xx :表示修改了XX代码
  • feat:xx :新增了XX需求
  • style:xx :修改了部分的样式
  • delete:xx:删除了某些无用的部分

推送到远程

git push -u origin master # 推送到远端 master

注意:合并分支必须先切换分支,删除分支不是必须的!但是流程最好是:先创建分支 ---> 合并分支 ---> 提交 ---> 删除分支 ----> 创建分支(第二天)

打标签

git tag v0.1 # 打标签 v0.1
git tag  # 查看所有标签
git show v0.1 # 查看 v0.1 标签(内容)

# 1. 同步单个标签
$ git push origin v0.1

# 2. 同步所有标签
$ git push --tags
# 或者:
$ git push origin --tags
往期精彩回顾




  • 交流群

欢迎加入机器学习爱好者微信群一起和同行交流,目前有机器学习交流群、博士群、博士申报交流、CV、NLP等微信群,请扫描下面的微信号加群,备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~(也可以加入机器学习交流qq群772479961




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/170678
 
103 次点击