首页 > 其他分享 >实际项目中一般使用到的git知识

实际项目中一般使用到的git知识

时间:2024-04-15 11:24:48浏览次数:18  
标签:git 代码 知识 合并 远程 提交 实际 分支

1.项目上线分支管理流程

yuque_diagram.jpg
图片压缩太厉害有些模糊 700k 压缩到20多k
清晰些的图片地址https://project.zdzspace.cn/test-vuekey

2.一些常用的git命令

  • git fetch 拉取远程仓库最新代码 但是不合并到本地分支
  • git merge feature-a 用于合并本地分支feature-a到当前分支 常用
  • gti pull origin feature-a 合并远程仓库分支feature-a到当前分支(未上线前所有分支统一可以直接通过这种方式本地解决冲突再push到远程) (仓库名origin 如果有多个仓库origin 要换成对应的仓库) 常用
  • git pull 拉取原型仓库 当前分支的最新代码 (常用)
  • git push 推送当前分支到远程仓库,如果未发布则会进行分支发布
  • git push -f 强制推送至远程仓库(会覆盖远程代码与本地当前代码一致) 慎用 自己分支只有自己使用可以根据需求强推,如果是别人的分支,要确保不会覆盖别人提交的代码,只有当自己本地的分支提交错误(例如提交信息想修改,或者有的文件不想提交)会撤销上次提交然后重新提交,覆盖远程记录
  • git cherry-pick 对应提交的hash值,可以合并指定提交代码到当前分支,一般未某个分支想要弃用但是想保留里面部分代码或者上线功能临时只想要其中部分功能(使用较少)
  • git reset --soft HEAD^ 用于撤销上一次提交文件会重新变为变更待提交状态 我一般使用vscode中的可视化进行操作撤销上次提交
    image.png
  • git revert hash值 撤销指定提交,它相当于手动
    假设a版本内容为 a1,提交b版本为a2, revert b 版本会新增一次提交 将a2改为a1,也就是说他相当于手动去还原代码,会存在代码提交记录,而git reset --soft HEAD^ 会把b版本的记录删除掉
    第一次revert
    第二次revert

3.冲突

之所以出现冲突,是因为两个人同时修改了同一个文件的同一个地方
比如 文件a.text 内容为a A成员修改内容为a1 B成员修改内容为a2,A与B都提交了pr/mr(pull request(git huv)/merge request (git lab等)合并请求)
如果先合并了A 则B的代码此时就是冲突的,如果县合并了B则A就是冲突的
冲突是因为 对于内容a 分别由两个修改版本 一个为a1 一个为a2,而在提交记录中a1与a2的修改都是基于a来的,因此对于git系统来说,他不能确定采用a1还是a2是对的,因此会产生冲突,交由开发人员来决定采用那个版本

  • 解决流程
    • 如果所有代码未上线,dev,sit,master代码一致,可以直接git pull origin dev(假设dev冲突) 直接在本地合并完成 然后push到远程就可以继续合并B的代码了
    • 或者从dev拉取一个conflict解决分支,本地切换到conflict分支,直接merge B的代码,本地解决完冲突,然后推送到远程.取消原来的合并请求,用这个conflict分支合并到dev(当代码上线之后就只能采用这种方式,不能直接merge dev或者sit代码了,因为这样会导致不需要上线或者未完成的功能混杂到当前分支)

标签:git,代码,知识,合并,远程,提交,实际,分支
From: https://www.cnblogs.com/coderzdz/p/18135543

相关文章

  • git 一些操作记录
    git怎么回滚已经modified的文件?如果你想要撤销对已修改的文件的更改,你可以使用gitcheckout命令。这将会将文件恢复到最后一次提交的状态。以下是具体的命令:gitcheckout--<file>在这个命令中,<file>是你想要撤销更改的文件的路径。例如,如果你想要撤销对TDWatchDog/lifetim......
  • git默认忽略文件名称大小写
    0.现象当将文件名称test修改为Test时,git提交记录检测不到变化1.原因Git默认设置忽略文件名大小写是因为不同操作系统对文件名大小写的处理方式不同,为了避免在不同操作系统之间出现文件名大小写不一致的问题,Git默认忽略文件名大小写。2.修改默认不忽略gitconfigcore.ig......
  • gitee基于webhooks实现前端简单自动化部署
    1.为什么采用自动化部署简而言之,程序员优秀传统:懒=>高级生产力.基于gitee进行的自动化部署,服务器环境为Ubuntu基于webhooks进行的自动化部署更加轻快便捷2.部署步骤1).服务器购买可以购买阿里云抢占式服务器进行实验,花费应该在一大洋以内,或者直接购买一年低配服务......
  • 21/10/11 - 21/10/15 零碎知识记录
    1.pc端实现移动端拖动效果思路moveDown记录鼠标按下位置记录当前状态为按下拖动+moveUp记录当前状态为非拖动moseMove根据拖动状态,计算当前拖动距离判断左拖右拖边界值对元素进行移动修改鼠标按下位置,以便下次计算移动距离,不初始化会导致移动距离指数式增加,移......
  • RAG知识库优化之Rerank应用
          前面几篇文章介绍了最基本的RAG实现,也了解了RAG的基本原理。最基本的RAG流程为用户Query问题,RAG应用在向量库查询出Context,然后将Query与Context喂到LLM,LLM生成满足Query的Response答案。      从这里可以存在三元组:Query、Context和Response,如要想进一步......
  • SQL SERVER锁(LOCK)知识及锁应用(转载)
    SQLSERVER锁(LOCK)知识及锁应用(转载)ChenSir°已于 2023-10-0915:10:48 修改阅读量2.1k收藏8点赞数1文章标签:数据库sqlserver于 2023-10-0915:07:09 首次发布  提示:这里所摘抄的关于锁的知识有的是不同sqlserver版本的,对应于特......
  • git pull如果提示merge冲突,先进行git reset --hard origin/master 后再git pull
    前言全局说明gitpull如果提示merge冲突,先进行gitreset--hardorigin/master后再gitpull一、说明gitreset--hardorigin/mastergitreset--hardorigin/master是一个Git命令,它的作用是将本地的当前分支重置到远程分支origin/master的状态。这个命令会丢失......
  • [javascript]知识点
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18031963出自【进步*于辰的博客】目录1、其他知识点链接2、严格模式3、类、对象3.1介绍3.2自定义对象3.2.1创建对象方法3.2.2建立继承关系4、变量5、this10、关于var与......
  • 本地升级idea后,不能向github上提交代码问题处理
    问题现象:本人自己电脑之前一直使用idea2018.1商业破解版,之前有简历本地代码仓库,并在github上建立了关联的远程代码仓库。最近本人在本地升级一下idea,从idea2018.1商业版升级到2023.1.5社区版本(idea支持win7的版本基本就到2023.1这个版本了,目前本人尝试安装了2023.1.5和2023.1.3......
  • Windows中Gitlab Runner的配置:shell = "powershell"
    摘要这是在Windows中摸索GitlabRunner的第一个坑:默认的值是“pwsh”。1、网上有人说,删除这一行或者改为shell=""这样就会造成流水线无法获取到.gitlab-ci.yml中定义的变量。正确做法shell="powershell"本文在说什么?说的是toml文件,完整展示如下:concurrent=1che......