女朋友乱用Git,差点把我代码删了。。。

昨天晚上我手把手教小姐姐用Git,小姐姐用完直呼“爽”死了! 昨天晚上我手把手教小姐姐用Git,小姐姐用完直呼“爽”死了!常用Git技能git设置关闭自动换行git tag 使用怎样遍历移除项目中的所有 .pyc 文件创建和使用git ssh key查看某个文件的修改历史git push 时报错 warning: push.default is unset;git submodule的使用拉子项目代码git add文件取消版本回退历史版本对比分支的意义与管理git冲突文件编辑不顺利的代码提交流程git顺利的提交代码流程理解github的pull request一些错误 阅读详情

想必大家平时都用 Git 管理代码,通过女朋友误删代码这事,我发现大家平时都或多或少有因为 Git 用得不熟耽误时间的,比如说:

1.怎么又报 detached HEAD 了?

2.push 不上去了,提示 non fast-forwards,什么鬼?

3.我想把正在开发的这个项目开源到 GitHub 上去,怎们做可以同时 push 到公司的代码平台和 GitHub 呢?

4.GitLab 上怎么做 code review?

根本原因还是没有系统学习过 Git,直接上手就 add、commit、pull、push一把梭。

相比同类软件,Git有很多优点。其中很显著的一点,就是版本的分支(branch)和合并(merge)十分方便。

有些传统的版本管理软件,分支操作实际上会生成一份现有代码的物理拷贝,而Git只生成一个指向当前版本(又称"快照")的指针,因此非常快捷易用。

但是,太方便了也会产生副作用。如果你不加注意,很可能会留下一个枝节蔓生、四处开放的版本库,到处都是分支,完全看不出主干发展的脉络。

41553f74f62288b846152f7392d8b0e6.png


那有没有一个好的分支策略呢?答案当然是有的。

一、主分支Master

首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。

f5710c7a3d1466b9352ccb4ea229d9e9.png


Git主分支的名字,默认叫做Master。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。

二、开发分支Develop

主分支只用来发布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做Develop。

895af9a20e20506c825308cbcaa84b53.png


这个分支可以用来生成代码的最新隔夜版本(nightly)。如果想正式对外发布,就在Master分支上,对Develop分支进行"合并"(merge)。

Git创建Develop分支的命令:

git checkout -b develop master

将Develop分支发布到Master分支的命令:

# 切换到Master分支
  git checkout master

  # 对Develop分支进行合并
  git merge --no-ff develop

这里稍微解释一下上一条命令的--no-ff参数是什么意思。默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。

90684652ede21a0eded11d961557d796.png


使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法。

648901939f3b2779d1ca565e21e7a364.png


三、临时性分支

前面讲到版本库的两条主要分支:Master和Develop。前者用于正式发布,后者用于日常开发。其实,常设分支只需要这两条就够了,不需要其他了。

但是,除了常设分支以外,还有一些临时性分支,用于应对一些特定目的的版本开发。临时性分支主要有三种:

  • 功能(feature)分支

  • 预发布(release)分支

  • 修补bug(fixbug)分支

这三种分支都属于临时性需要,使用完以后,应该删除,使得代码库的常设分支始终只有Master和Develop。

接下来,一个个来看这三种"临时性分支"。

第一种是功能分支,它是为了开发某种特定功能,从Develop分支上面分出来的。开发完成后,要再并入Develop。

ea4db7e347e6bb5d2fc4d47c0059f7bb.png


功能分支的名字,可以采用feature-*的形式命名。

创建一个功能分支:

git checkout -b feature-x develop

开发完成后,将功能分支合并到develop分支:

git checkout develop

  git merge --no-ff feature-x

删除feature分支:

git branch -d feature-x

第二种是预发布分支,它是指发布正式版本之前(即合并到Master分支之前),我们可能需要有一个预发布的版本进行测试。

预发布分支是从Develop分支上面分出来的,预发布结束以后,必须合并进Develop和Master分支。它的命名,可以采用release-*的形式。

创建一个预发布分支:

git checkout -b release-1.2 develop

确认没有问题后,合并到master分支:

git checkout master

  git merge --no-ff release-1.2

  # 对合并生成的新节点,做一个标签
  git tag -a 1.2

再合并到develop分支:

git checkout develop

  git merge --no-ff release-1.2

最后,删除预发布分支:

git branch -d release-1.2

最后一种是修补bug分支。软件正式发布以后,难免会出现bug。这时就需要创建一个分支,进行bug修补。

修补bug分支是从Master分支上面分出来的。修补结束以后,再合并进Master和Develop分支。它的命名,可以采用fixbug-*的形式。

d71d07b5fa6b62444dbb7b9378504b17.png


创建一个修补bug分支:

git checkout -b fixbug-0.1 master

修补结束后,合并到master分支:

git checkout master

  git merge --no-ff fixbug-0.1

  git tag -a 0.1.1

再合并到develop分支:

git checkout develop

  git merge --no-ff fixbug-0.1

最后,删除"修补bug分支":

git branch -d fixbug-0.1

原文链接(阮一峰老师的博客):https://www.ruanyifeng.com/blog/2012/07/git.html

有兴趣的同学可以火速加入我们的星球

3周零基础入门提供10节课程

全年12节趣味实战项目含源码,

每月奖励优秀的Top3同学送书

专业的答疑群,大厂的老师保姆式的教学

如果不满意,三天内随意退款!一年88,现在优惠16元

cdd8fd621a290a87751b32a7d03dd9c3.png

扫码加入,3周零基础入门

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

keil5编程前的工程文件配置,芯片型号支持包配置,用户文件配置,启动文件配置和库函数配置-江科大stm32学习 第一天 1.start文件夹中头文件需要配置路径path,另外user和library也需要,都是同样的操作。如图,在option界面c/c++中,在倒数第二空行的三个点处添加。2.需要设置一个宏,作用是使主函数头文件包含标准库函数,操作如图:复制头文件中8296行的字符串,在option界面的c/c++中第一行define粘贴这个字符串即可。一、首先,下载芯片支持包,选择你自己的器件型号,不懂的可以看我这篇选器件的方法(默认已经注册好用户)点击编译按钮,编译成功后即可在user文件夹里添加main.c正常使用。 阅读详情

相关推荐

手把手教你用U盘制作Win11启动盘:从PE工具到系统安装全流程

本文提供了一份详尽的Windows 11启动盘制作与系统安装全流程指南。从选择合适的U盘和PE工具开始,重点讲解了如何正确制作包含EFI引导分区的启动盘,并详细演示了在PE环境下进行GPT分区、使用CGI工具安装系统镜像,以及首次启动后的关键设置步骤,帮助用户轻松完成从零到一的系统安装。

weixin_28475533的博客 1295

git从远程分支拉取代码_同事把我Git代码分支误删了,,,,

今天真是一个难忘的日子啊,刚跟产品扯完需求排期的问题,后脚同事一个弹窗瞬间让我凌乱了。以至于说话都拼音加错别字了哈哈~但是咱是程序员啊,遇事不好慌,先冷静一波,回忆一下上次处理这个事情是怎么处理的..................回忆了半天,好像也没遇到过这种事情啊,看来是觉得我7年程序员生涯没被别人删远程分支我猿生不完美么。嗯。虽然心里有个大概的流程,但是还是先百度吧。输入www.baidu....

weixin_39665302的博客 372

【抓包工具】Windows 10/11:Charles 从零到精通(下载、安装、配置与HTTPS证书实战)

本文提供了一份详尽的Charles抓包工具在Windows 10/11系统上的从零到精通指南。内容涵盖下载安装、初始配置、解决端口冲突,并重点解析了HTTPS抓包的核心步骤——安装CA证书。此外,还介绍了手机抓包配置及映射、断点等高效使用技巧,帮助开发者和测试人员快速掌握网络调试与安全分析技能。

weixin_29251131的博客 553

女朋友乱用Git,差点把我代码删了。。。,2024年最新QT原理与源码分析视频课程

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

2401_84140754的博客 491

在 Ubuntu 22.04 上配置 SonarQube 与 CI/CD 流水线实现自动化代码审查

本文详细介绍了在Ubuntu 22.04系统上配置SonarQube并与CI/CD流水线集成的完整流程,实现自动化代码审查。从环境准备、数据库配置到核心参数调优,再到与Jenkins和GitHub Actions的深度集成,提供了实战技巧和性能优化建议,帮助团队提升代码质量监控效率。

weixin_28829325的博客 262

HIL(硬件在环)技术汇总梳理

HIL(Hardware-in-the-Loop)测试领域的知名公司有dSPACE、NI、Vector和speedgoat等,本文是针对这几家HIL技术的对比分析。

Mr.Cssust的博客 3690

女朋友乱用Git,差点把我代码删了。

软件正式发布以后,难免会出现bug。这时就需要创建一个分支,进行bug修补。修补bug分支是从Master分支上面分出来的。修补结束以后,再合并进Master和Develop分支。它的命名,可以采用fixbug-*的形式。

2201_75604341的博客 562

CNN+LSTM+Attention+DNN模型实战:pytorch搭建CNN+LSTM+Attention+DNN行车速度预测

CNN+LSTM+Attention+DNN模型实战:pytorch搭建CNN+LSTM+Attention+DNN行车速度预测

6045

女友乱用Git,差点把我代码删了。。。

想必大家平时都用 Git 管理代码,通过女朋友误删代码这事,我发现大家平时都或多或少有因为 Git 用得不熟耽误时间的,比如说: 1.怎么又报 detached HEAD 了? 2.push 不上去了,提示 non fast-forwards,什么鬼? 3.我想把正在开发的这个项目开源到 GitHub 上去,怎们做可以同时 push 到公司的代码平台和 GitHub 呢? 4.GitLab 上怎么做 code review? 根本原因还是没有系统学习过 Git,直接上手就 add、commit、pull、p

Python_cocola的博客 139

Python爬虫实战:如何爬取12306列车信息

本文介绍了如何使用Python编写爬虫,抓取12306列车信息。我们讲解了如何分析12306的列车数据接口,如何发送HTTP请求,解析返回的JSON数据,并将数据保存到本地文件中。我们还讨论了如何绕过反爬虫机制,如使用随机User-Agent和设置请求延时。通过这个实战项目,你应该掌握了如何爬取并解析来自公共API的数据,同时提高了你的爬虫技能。这些技能不仅适用于12306列车信息抓取,也可以广泛应用于其他需要抓取JSON数据的网站。

2201_76125261的博客 1927

cesium加载geotiff的 四种方法

本文介绍了在Cesium中加载GeoTIFF数据的两种主要方法。首先解析了核心前置知识,包括坐标系匹配、数据类型区分和性能优化。方法1详细演示了如何将RGB影像GeoTIFF转换为Cesium影像图层,包含从数据解析到Canvas转换的完整代码流程。方法2则针对高程数据(DEM)处理,展示了前端直接解析构建地形网格的方案。文章提供了完整的代码示例和关键实现要点,适用于卫星影像、专题图和数字高程模型等多种GeoTIFF数据类型在三维场景中的可视化需求。

大剑师兰特的GIS世界 396

朋友乱用Git,差点把我代码删了。。。

想必大家平时都用 Git 管理代码,通过女朋友误删代码这事,我发现大家平时都或多或少有因为 Git 用得不熟耽误时间的,比如说: 1.怎么又报 detached HEAD 了? 2.push 不上去了,提示 non fast-forwards,什么鬼? 3.我想把正在开发的这个项目开源到 GitHub 上去,怎们做可以同时 push 到公司的代码平台和 GitHub 呢? 4.GitLab 上怎么做 code review? 根本原因还是没有系统学习过 Git,直接上手就 add、commit、pull、p

m0_59236548的博客 123

使用Python爬虫抓取公共交通网站的时刻表

Python爬虫是一种通过自动化方式从网页中抓取数据的程序。爬虫通过模拟用户请求,获取网站的HTML页面内容,并通过解析这些HTML内容,提取出我们需要的信息。requests:用于向网站发送HTTP请求并获取响应。:用于解析HTML文档,提取数据。Selenium:用于处理动态加载的网页,模拟浏览器操作。pandas:用于数据处理和分析,方便存储和操作抓取到的数据。本文介绍了如何使用Python爬虫抓取公共交通网站的时刻表,并提取其中的关键信息。我们使用了requestsSelenium和。

2201_76125261的博客 1120

女朋友乱用Git,差点把我代码删了。,手把手教你5G时代Webview的正确使用姿势

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

2401_83627805的博客 599

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Git】

Git 是目前为止最好用的分布式版本控制系统。大名鼎鼎的 github 用的就是 git 系统来管理它们的网站,这里需要区分一下,github 和 git 是两个东西,github 是一个社区,git 是一个服务系统,github 只支持 git 分布式系统,所以故名成为 github。工作区(Working Directory) 就是在电脑里能看到的目录,比如 xxx-master 文件夹就是一个工作区。版本库(Repository)工作区有一个隐藏目录.git,是 Git 的版本库。

bryant_meng 1223

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

AI应用-多人AI协作越界处理

AI加速开发催生越界问题:多人协作中,AI因无视代码所有权而“顺手”修改他人文件,引发静默破坏、冲突与信任危机。根源在于AI无边界意识、改动生成快、评审难覆盖。治理需三道防线:事前用OWNERS.md明权责,事中通过本地Git Hooks实时提醒越界,事后以平台MR流程强制负责人评审。双方案结合,实现“提交即提醒、合入必审批”,在效率与安全间建立可持续协作机制。

338

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

[LLM Wiki理论与实践-05]解读OpenWiki的Personal模式构建的知识库目录结构

[LLM Wiki理论与实践-04:使用OpenWiki的Personal模式构建知识库]介绍了如何执行安装OpenWiki和通过执行`openwiki personal --init`命令以个人模式进行初始化,最终调用`openwiki personal --update`和`openwiki ingest`命令利用配置的Connector加载外部数据源来生成构建个人知识库的Wiki页。这篇文章我们就来看看采用OpenWiki的Personal模式构建的知识库对应目录的结构以及具体文件的内容。

JaydenAI的博客 373

自建 Git 服务器和裸仓库差在哪:要能提合并请求

在一台 Linux 上 git init --bare 就能自建 Git 服务器,但它只能推拉代码,没有网页、合并请求、评审和按仓库分配的权限。对照裸仓库和 AngusGit 各自能做什么,再走一遍在 AngusGit 上发起合并请求的最短路径,以及已有裸仓库怎么完整搬过来。

AngusTester 336

手机远程能开PowerShell、Git Bash吗?ToDesk v5.3.0.0 远程终端三种玩法

手机远程控制电脑,能直接打开 PowerShell 和 Git Bash 吗?ToDesk v5.3.0.0 带来了更便捷的远程终端操作体验。本文围绕远程终端的三种实用玩法展开,介绍如何通过手机远程连接电脑、使用 PowerShell 执行系统命令、借助 Git Bash 进行代码管理,以及多终端操作的应用场景,帮助你了解远程终端的使用方法,提升远程办公、开发调试和日常运维效率。

承于所学,探技术之渊;以代码求政,寻成长之道。 2万+

【git原理与使用】git基本操作及底层原理(二)

此时我们发现,现在这个目录下就只有readme这一个文件了,并且readme里面的内容也只有最初的第一行了(因为工作区也回退了),git log也只打印了第一次的提交了!当前我们的版本库中是没有更新readme的这次修改的,所以当前版本库的这个版本就是没有发生修改的版本,那不这次readme文件修改之前的版本嘛。通过上一篇文章的学习,我们知道了 Git 有工作区、暂存区和版本库。如果有一天你发现之前的工作做的出现了很大的问题,需要在某个特定的历史版本重新开始,这个时候,就需要版本回退的功能了。

m0_70980326的博客 167

自建git服务器需要安装什么套件,需要web应用吗?

自建 Git 服务器的方式有很多种,是否需要 Web 应用取决于你想要的协作体验和功能复杂度。如果你只需要“能 push / pull 代码” → 不需要 Web 应用​。👉 结论:如果你只是想三丰云“有个地方放代码”,完全不需要 Web 应用。如果你需要“团队协作、权限、PR、Issue” → 需要 Web 应用。二、进阶方案:免费云服务器做带 Web 界面的 Git 服务(推荐)一、最简方案:只用 Git 本身(不需要 Web 应用)五、是否需要 Web 应用?✅ 方案二:GitLab(功能最强)

xinhuanjieyi的博客 165

git配置项目子模块

java 的常规依赖通常是采用maven的方式进行操作的,但这次采用的方法是直接使用git submodules进行配置。方式A\方式B都需要将依赖 libs 子模块 (lasp-common-all) 中的公共模块 放到 pom。等同于在libs 下,另外新增了一个git管理的 lasp-common-all项目。

日日留心的技术专栏 148

SAP abapGit 实战(三):把改动上传到 Gitee,单分支提交与多分支 PR 协作

回到 Gitee 仓库首页,在「近期动态」里可以看到刚刚提交的记录(示例:提交到 feature/test 分支,54ab379..664057c)。点击该提交即可跳转查看具体改动内容。在 SAP 里打开之前拉下来的对象,随便改一点内容(本文示例给函数模块 ZCM_APPEND_BUTTON 加了一段注释和局部变量声明),用来产生一个可提交的改动。,可以看到 LOCAL(SAP 本地)与 REMOTE(Gitee)的内容对比,改动的行会高亮显示。切到目标分支并执行 pull,系统里的对象变成该分支的状态。

qq_43773123的博客 123

活动回顾 | AtomGit × 模力无限 AI Meetup 珠海第一颗星,点亮了

有人往商业场景多走一步:小程序「铸履」首页写着「为你的脚,定制一双鞋」,3D 打印、一人一版,底下挂着 AI 试穿和健康档案。(中山市湖银人工智能科技有限公司 CEO、澳门科技出版社 AI 发展部副主任)讲《如何使用 AI 进行创业:AI 浪潮之下,如何一人成军》,把「一人成军」拆成十章:AI 是超级学习机、是放大工具、也能帮你创造新工具,最后串起学习、生产、销售、分析、优化的五维闭环。四个小时里,四场分享、一场一小时的工作坊、十个 Demo、五位上台的小伙伴,和一次全场投票。这一次,两家把坐标落在珠海。

白天写代码,晚上追AI大模型,偶尔搞点八卦 开源动态|技术干货|实习机会|生态活动 我负责分享,你负责变强 255

git submodules

后续相当于直接 git 操作 submodules-remote-url。cd 到 submodule/

日日留心的技术专栏 23
上一篇: 数千万,打水漂了。。
下一篇: Docker 大势已去,Podman 即将崛起!
菜鸟学Python
博客等级 码龄9年 8088粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值