当前位置: 首页 > news >正文

[OpenMMLab]提交pr时所需的git操作

git开发流程

准备工作

作为一个开发者,fork一个仓库之后应该先做什么?

1、下载仓库,创建上游代码库,查看当前的分支情况

git clone https://github.com/<your_name>/<repo_name>.git
git remote add upstream git@github.com:<upstream_name>/<upstream_repo_name>.git

因为我们要对master分支做开发,但为了保证能够不修改master,那么就需要在master基础上建立dev分支,并为分支设置远程跟踪信息,从而建立对应的上游分支并进行同步(即github接收端分支)

# 查看分支信息
git branch -a
# 选择dev分支
git switch -c dev
# 设置分支跟踪origin/dev分支
git branch --set-upstream-to=origin/dev dev
git pull

git流程框图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JrwVCtfd-1676213844165)(/media/liuyoufu/TOSHIBA EXT/文档集/博客正在撰写/git实例分析.assets/git流程图.png)]

开发流程

# 经过一系列开发之后,需要提交啦,此时有些仓库会有pre-commit脚本来检测并修正代码风格,以确保代码风格统一,以openmmlab为例
# pre-commit需要安装,一个虚拟环境安装一次即可
pip install -U pre-commit
pre-commit install
pre-commit install -c .pre-commit-config-zh-cn.yaml
# 安装完毕后,执行pre-commit
pre-commit run --all-files -c .pre-commit-config-zh-cn.yaml# pre-commit 全部通过后,开始提交
git add <file>
git commit -m "xxxxx"
git push# 如果提交需要修改,则仍在该分之下修改即可

在同时开发两个pr时,应该如何处理?

同时处理两个pr的时候,就需要建立一个新的分支与upstream取得联系,每一个分支与一个pr进行联系

可能出现的问题

add后出错

add之后,即已经将文件放入到暂存区存放,从暂存区撤销的命令如下:

# 所有文件撤回
git reset HEAD
# 部分文件撤回
git reset HEAD <file>
# 通过git status查看要提交的变更,里面所存放的就是暂存区的内容,即add之后,commit之前

commit后出错

commit出错,此时还没有push,但此时已经git log中出现此次命令,则需要通过--hard或者--mixed来撤销

git reset --mixed HEAD

执行命令后,会报HEAD 现在位于 a5bd821 no1,但我们git log后会发现并没有撤销,所以commit之后要撤销,则需要加一个^

git reset --mixed HEAD^

此时的效果,就是collate.py撤销commit,同时本地文件中的修改也会撤销,但这也并不是我们想看到的,我们想要的效果应该是撤销commit,同时保留文件内容:

git reset --soft HEAD^

此时,提交的文件又回到暂存区,特别注意的是,此操作只支持HEAD指针的移动,而针对某个文件进行撤回是不允许的!也是不支持的(目前我了解到的是不支持)

--soft--mixed之外还有--hard,这个指令会直接删除掉add的修改,全部梭哈

如果此时想要撤回撤回操作,那么就需要重新提交

push后出错

继上文git commit没有错误后,要上传至github

git push

此时,突然发现有个错误没改,那么此时在本地无法直接修改github中的内容,着急情况下会这么操作

1、在最新的commit基础上直接修改

2、回退到上一个commit,或者某一个commit处,并撤销该commit与提交时commit之间的修改

git reset --hard HEAD <commit_id>
# 修改ing
git push

这说明你已经理解和掌握reset的用法,但这样会报错,说当前分支的最新提交落后于其对应的远程分支,那么就git pull然后解决冲突。

http://www.lryc.cn/news/4186.html

相关文章:

  • pandas——groupby操作
  • webpack.config.js哪里找?react项目关闭eslint监测
  • OpenCV 图像梯度算子
  • Linux c编程之Wireshark
  • 极客时间_FlinkSQL 实战
  • Pytorch 混合精度训练 (Automatically Mixed Precision, AMP)
  • 使用太极taichi写一个只有一个三角形的有限元
  • 进程,线程
  • 第03章_基本的SELECT语句
  • 干货 | 简单了解运算放大器...
  • C++定位new用法及注意事项
  • 【Android笔记75】Android之翻页标签栏PagerTabStrip组件介绍及其使用
  • 【Kafka】【二】消息队列的流派
  • 现代 cmake (cmake 3.x) 操作大全
  • how https works?https工作原理
  • Docker的资源控制管理
  • MMSeg无法使用单类自定义数据集训练
  • Redis使用方式
  • 无主之地3重型武器节奏评分榜(9.25) 枪械名 红字效果 元素属性 清图评分 Boss战评分 泛用性评分 特殊性评分 最终评级 掉落点 掉率 图片 瘟疫传播
  • 什么是编程什么是算法
  • 【c++】函数
  • [golang gin框架] 1.Gin环境搭建,程序的热加载,路由GET,POST,PUT,DELETE
  • 【开源】祁启云网络验证系统V1.11
  • 震源机制(Focal Mechanisms)之沙滩球(Bench Ball)
  • C++入门:多态
  • 华为OD真题_工位序列统计友好度最大值(100分)(C++实现)
  • [ruby on rails]MD5、SHA1、SHA256、Base64、aes-128-cbc、aes-256-ecb
  • 《NFL星计划》:拉斯维加斯突袭者·橄榄1号位
  • 韩顺平Linux基础学习(1)
  • Rust学习入门--【6】Rust 基础语法