【Git基础】02——分支:在不破坏主线的情况下做实验

git 代码只提交分支,不提交主线 当在本地master开发或者修改bug完成,提交到远端master,发起merge request的时候,这些代码需要同时cherry-pick(审核人完成)合并到发布分支线时,发现分支冲突,这个时候就需要我们自己单独只在分支再重新提交一次,该怎么操作呢?一起来看一下吧 clone自己的远程仓库 (git clone git@192.168.248.76:ABC/z... 阅读详情

基础篇:【Git 基础】01——代码是怎么被追踪的

​ 之前我们介绍了 git 的基础工作流:add → commit → push。但现实开发很快会遇到一个问题:你想尝试一个新功能,但不确定能不能成功,又不想把 main 分支搞乱。比如,想重构一段代码、想试一个新架构、修一个可能越修越坏的 bug。 这时候,如果所有修改都直接提交到 main,项目很容易进入混乱状态。Git 分支,就是为了解决这个问题而存在的

一、分支是什么

​ 分支可以理解为一条独立的提交时间线。你从 main 上某个节点"分叉"出去,在新分支上自由提交、修改,main 完全不受影响。做好了再合并回去,做坏了直接删掉。

在这里插入图片描述

​ 注意,分支不是"复制一份代码",它只是一个指针,指向某个 commit 节点。创建分支几乎没有开销,这也是 Git 能支持大量并行开发的原因。

二、分支基础操作

2.1 创建并切换分支

git checkout -b feature/login

​ 其中,-b 表示新建分支,feature/login 是分支名。

​ 这条命令等价于:

git branch feature/login    # 创建
git checkout feature/login  # 切换过去

​ 现代 git 更推荐使用 git switch:

git switch -c feature/login   # -c 等同于 -b,create 的意思

​ 分支名的约定:feature/ 前缀表示新功能,fix/ 表示修 bug,release/ 表示发布准备,hotfix/ 紧急修复。Git 不强制,但统一规范会带来两个好处: 分支列表一眼可读 ,CI/CD 自动化更容易配置。

2.2 查看当前在哪个分支

git branch

​ 输出里带 * 的就是当前分支:

* feature/login
  main

​ 本质上,HEAD 指针正在指向这个分支。

2.3 在新分支上正常开放

​ 切到新分支后,工作流和之前完全一样:改代码 → git add → git commit。唯一不同的是,commit 被记录在 feature/login 这条时间线 上,不会影响 main。

2.4 切回 main

git switch main

​ 切回去之后,你会发现工作目录恢复成了 main 的状态,在 feature 分支上做的改动"消失了"。它们没有被删除,只是 git 切换了当前指针,feature 分支的内容还在,切回去就能看到。

​ 其实,这里Git 并不是在“改文件”。Git 在做的是:切换整个项目的历史快照。

2.5 合并分支

​ feature 做好了,合并回 main:

git switch main
git merge feature/login

​ git 会把 feature/login 上的 commit 合并到 main。如果两条分支没有修改同一个地方,合并是自动完成的。

​ 合并完之后,feature 分支就可以删掉了。因为历史已经进入 main,不再需要它。

git branch -d feature/login

三、冲突:两个人改了同一个地方

​ 合并时最常见的麻烦是冲突(conflict),你和别人都修改了同一个文件的同一段代码,git 不知道该保留哪个,就会暂停合并,让你手动决定。

3.1 冲突内容

​ 冲突文件会变成这样:

<<<<<<< HEAD
def greet(name):
    return f"Hello, {name}!"
=======
def greet(name):
    return f"Hi, {name}!"
>>>>>>> feature/login

​ 其中,<<<<<<< HEAD 到 ======= 是你当前分支的版本,而======= 到 >>>>>>> 是要合并进来的版本

3.2 解决方法

​ 直接编辑文件,删掉你不想要的那段和所有 <<<<<<<、=======、>>>>>>> 标记,留下最终想要的代码,然后告诉git你已经解决:

git add 冲突文件名
git commit

​ 冲突解决完毕。

在这里插入图片描述

​ 冲突不是 git 的 bug,是正常现象。解决原则很简单:两个版本都看一眼,留你想要的,删掉标记符号,重新提交。冲突是 Git 的安全机制,而不是失败。

四、推送分支到 GitHub

​ 本地分支推到远程:

git push origin feature/login

​ 推上去之后,可以在 GitHub 上开一个 Pull Request(PR),这是"我想把这个分支合并到 main"的申请,团队成员可以在上面 review 代码,CI 也会在这里跑。

​ PR 通过后,点 GitHub 上的 Merge 按钮,就完成了合并。合并完可以在 GitHub 上直接删掉远程分支,本地也同步清理:

git branch -d feature/login           # 删本地分支
git remote prune origin               # 清理本地对已删除远程分支的引用

五、典型的分支工作流

​ 独立项目和团队协作的分支策略不一样。

5.1 独立项目(简单策略)

main        ← 只放稳定、可用的代码
feature/*   ← 每个新功能一个分支,做好合并回 main
fix/*       ← 每个 bug 修复一个分支

5.2 团队协作(常见策略)

main        ← 对应生产环境,只接受 PR 合并,不直接 push
dev         ← 日常开发的集成分支,功能分支合并到这里先验证
feature/*   ← 从 dev 分叉,完成后合并回 dev

​ 不需要在第一个项目就用最复杂的策略,从"main + feature 分支"开始,感受到不够用再升级。

六、总结

​ 记住这几个核心认知,你就真正理解分支了:

  • 分支是一条提交历史线

  • 分支不是复制代码,而是指针

  • 切换分支 = 切换项目快照

  • merge 是历史的合流

  • 冲突是 Git 请求人工决策

git分支可以让我们安全试错,而软件开发本质上就是持续试错。

利用PyCharm高效解决Gerrit开发分支与主线分支合并冲突 本文详细介绍了如何利用PyCharm高效解决Gerrit开发分支与主线分支的合并冲突问题。通过创建临时分支、使用PyCharm的可视化合并工具以及处理Change-Id丢失等关键步骤,大幅提升代码合并效率。文章还提供了高级技巧与避坑指南,帮助开发者避免常见错误,确保合并过程顺利进行。 阅读详情

相关推荐

程序设计二(面向对象)_实训10_复杂类的实现_ArrayList类的实现

第1关:构造函数与析构函数的实现

2401_83406306的博客 819

Git - IDEA 中 Cherry-Pick 实现分支的部分提交合并到主线分支

主线分支:master① 基于master分支创建一个分支:feature-1,并切换到 feature-1 分支② 在feature-1分支上进行两次提交 ③ 基于master 分支创建一个新的分支:feature-2,并切换到 feature-2 分支④ 在 feature-2 分支上找到 Log–>Branch–>feature-1 分支的提交记录: ⑤ 在 feature-2 分支上 选择将 feature-1 分支的哪些提交记录合并到 feature-2 ,这样就可以实现将部分提交记录合并到

你今天真好看呀 5329

Abaqus边界条件设置避坑指南:为什么你的实体单元转动自由度总是不生效?

本文深入解析了Abaqus中实体单元转动自由度设置失效的根本原因。从力学原理与有限元节点自由度的本质区别出发,阐明了实体单元仅具有平动自由度,直接约束其转动自由度是无效操作。文章提供了对称边界条件的正确设置方法,并给出了使用耦合约束等高级方案来模拟真实抗转动约束的实战指南,帮助用户避免常见建模陷阱。

weixin_29290379的博客 620

git分支与主线合并流程

1.git status 查看是否为dev分支代码 2.git checkout master 检出为主线代码 3.git merge dev 合并分支代码,将当前主线分支指针指向dev 4.git pull 提交合并代码到主线 5.git checkout dev_hdj 切换回分支代码 D:\BI-MIS\fs-bi-crm-report>git status On bra

Deret的博客 9873

生信人填坑记 orthofinder的安装和基础使用

其中常用的有两个结果,第一个是Orthogroups文件夹下的Orthogroups.GeneCount.tsv,这个文件里保存着每个家族在每个物种里的成员数量。(写到这儿饭点到了,吃饭要紧…在国内使用conda的同学我相信很多人都会遇到-|- -|- -|- -|- -|- -|- -|- -|- 一直转圈。软件的是由很简单,将你要跑的物种的蛋白质文件放在work/data目录下,文件名都用物种缩写,后缀统一就行。当然,很多软件都会自带一个这样的文件,conda装不了的时候可以去软件官网溜达溜达。

qq_43337286的博客 5381

Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行

Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行

9791

git命令项目实战:采用fork分支合入主线

1. Clone个人分支代码 git clone -b dev http://git_ip:git:port/个人分支/android.git 2.切换到新clone下来的代码目录 3.下载主线代码(举例中分支名为:dev) git remote add upstream http://git_ip:git:port/主库/android.git git fetch upstream git c...

蓝不蓝编程 1561

Python爬虫实战:扒取专利数据库核心信息,我用这招搞定反爬+数据结构化(附完整可运行代码)

这套爬虫方案从「实际需求」出发,解决了专利数据库抓取的核心痛点:反爬突破、数据结构化、标题创作。核心价值不在于代码多复杂,而在于「实用」——我用这套代码半天就抓取了800+条Python爬虫相关专利,比手动效率提升了几十倍。最后想说:爬虫技术的核心是「解决问题」,而不是炫技。专利数据能帮我们快速了解行业技术趋势,尤其是程序员,从专利中扒出的核心逻辑,远比零散的博客文章更系统。希望这篇实战分享能帮到有需要的小伙伴,也欢迎在评论区交流专利爬虫的更多技巧!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2124

Git:分支 merge 主线代码

协同工作时经常会遇到这样的情况:当前正在开发分支落后了主线代码很多次提交,为了某些目的,当前正在coding的分支需要合入其他人提交的代码,需要 merge 主线代码。

随心写写 3179

Python 爬虫实战:爬取哔哩哔哩知识区,抓取高赞课程信息

哔哩哔哩(Bilibili)是一个广受欢迎的综合性视频社区,其中的知识区汇聚了大量优质的教育、科普、技术等课程内容。本文将指导读者如何使用 Python 爬虫技术从哔哩哔哩知识区抓取高赞课程信息,并进行数据分析。本文深入探究了利用 Python 爬虫技术从哔哩哔哩知识区抓取高赞课程信息的全流程。从前期的环境搭建、模拟登录,到核心的课程数据抓取、存储,再到后续的数据分析与可视化,都详细展开讲解并提供代码支持。通过此方法所获取的数据,能够助力创作者优化内容、用户发现优质课程、平台洞察用户需求。

u014481728的博客 1133

基于STM32单片机设计的智能坐垫_431

本文设计了一款基于STM32F103C8T6单片机的智能坐垫系统,该系统集成了压力传感器、SHT30温湿度传感器、薄膜加热垫、涡轮风机、语音播报模块、OLED显示屏及HC-05蓝牙模块,实现了对用户就坐状态与坐垫微环境的实时监测与智能调控。系统通过压力传感器检测用户就坐情况,自动启动久坐计时并触发语音提醒;温湿度数据用于控制通风与加热功能,以改善座椅舒适性;用户可通过按键或手机APP设置久坐时长、手动开关通风与加热,并通过OLED屏或APP实时查看环境参数与计时状态。本设计体现了嵌入式系统在健康关怀与舒适性

409

git分支理解与操作(详解)

git分支理解与操作

hutaotaotao的博客 1万+

人工智能训练师三级补贴3120元申领全攻略|条件+流程+五省市对比

补贴是真的,但不是"白给"的。你需要满足社保、户籍、时间等条件,严格按照流程操作。记住四件事先确认自己是否满足条件,再报名——别考完了才发现领不到紧缺工种补贴更高——确认你所在城市是否在紧缺目录中证书下发后12个月内申请——设个日历提醒材料准备齐全再提交——避免来回折腾如果你正在考虑考人工智能训练师三级证书,想要从报名到备考到拿证到申领补贴的完整一站式指南,欢迎查看我的付费专栏:📖《人工智能训练师三级·从零到拿证完全指南》80篇系统化内容,覆盖报名、备考、冲刺、拿证全流程。

白话机器学习 1519

Git 分支管理详解

Git 分支管理详解

2201_76062618的博客 3112

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Git分支策略

在此博客文章中,我们将讨论在SDLC期间可以采用的各种分支策略。 您的组织针对不同的情况存在不同的策略,应该根据可用的信息和团队中的情况来做出有启发性的决定。 主线分支策略 对于中小型团队而言,干线分支策略是最简单但最有效的策略。 团队中的开发人员将他们的工作不断提交到一个中央分支中,该分支始终处于可部署状态。 换句话说,项目的主要分支应该只包含经过测试和质量的工作,并且绝不应该被破坏。...

danpu0978的博客 791

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Git教程——Git分支

上篇文章我们学习了,这篇文章我们学习Git教程——Git分支。

霖hero 1202

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Git版本控制工具--基础命令和分支管理

Git仓库管理 分支管理

2301_81453175的博客 1471

git分支管理策略_Git分支策略

git分支管理策略 在此博客文章中,我们将讨论在SDLC期间可以采用的各种分支策略。 您的组织针对不同的情况存在不同的策略,应该根据可用的信息和团队中的情况来做出有启发性的决定。 主线分支策略 对于中小型团队来说,干线分支策略是最简单但最有效的策略。 团队中的开发人员不断将他们的工作提交到一个中央分支中,该分支始终处于可部署状态。 换句话说,项目的主要分支应该只包含经过测试和质量的工作,并...

danpu0978的博客 406

【Git的分支介绍】

而对于独立开发者来说,分支的作用也很重要,它允许你新的开发从开发主线上分离出来,这样你可以在不影响主线的情况下进行实验和开发,其中每个分支都是项目的一个副本,在分支上完成开发后,可以将这些变更合并回主分支。频繁合并分支,一个小的更新就进行合并,可以有效防止造成较多冲突,单一分支独立运行时间越久,那么其和主线的差距就会变的越来越大,要避免这种情况。此时HEAD是当前分支的内容,分支名的部分显示的是你要合并的分支中的内容,此时,你可以删除git提供的标记,及时删除使用过的分支,保持分支的整洁。

瞎老弟的博客 539

Git基础

除了可以在项目中定义.gitignore文件外,还可以设置全局的.gitignore文件来管理所有Git项目的行为。这种方式在不同的项目开发者之间是不共享的,是属于项目之上Git应用级别的行为。可以在任意目录下创建相应的.gitignore文件,然后再使用以下命令配置Git。

m0_75260099的博客 896

PyCharm实战:Gerrit开发分支合并到主线的完整避坑指南

本文提供了一份详细的PyCharm实战指南,帮助开发者将Gerrit开发分支安全高效地合并到主线。文章重点讲解了如何利用PyCharm的可视化工具解决合并冲突,并妥善处理Gerrit特有的Change-Id问题,旨在规避常见错误,提升团队协作中的代码合并效率与质量。

lstm7chronicler的博客 334

Git进阶系列 | 2. Git中的分支策略

为了找到最适合团队的模型,应该坐下来分析所做的项目,讨论发布策略,然后决定一个分支工作流,从而以最好的方式支持我们的项目。你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。首先,只有一个分支,因此很容易跟踪项目中的变化。虽然不同的团队可能会决定完全不同的分支策略,但这两种流行的策略可以作为团队分支策略的灵感来源。

残星说梦话 662

Git入门 -- 分支

git merge一共有三种模式–ff自动合并:当合并的分支为当前分支的后代,会自动执行–ff,若不匹配则执行–no-ff合并。–no-ff非Fast-forward模式:在任何情况下都会创建新的commit多方合并(即使被合并的分支为自己的直接后代)。–ff-only:只会按照 Fast-forward 模式进行合并,如果不符合条件(并非当前分支的直接后代),则会拒绝合并请求并且退出。

qq_64037280的博客 695

破坏建筑不是犯罪

多年以来,我一直被教导,在任何情况下都应该避免打破持续的集成构建。 首先让我引用一些经典。 清洁编码器中的 Bob叔叔说: 团队必须始终保持构建正常运行。 如果构建失败,则应该是“停止印刷”事件,团队应该开会以快速解决问题。 在该部分的后面: 我让每个开发人员在提交之前都运行连续构建脚本。 最终报价: 他们(CI测试)永远都不会失败。 如果他们失败了,那么整个团队应该停止...

danpu0978的博客 114

git的七个重要基本原则

记录下 Linux 内核开发工作流程中,围绕 Git 展开的七个重要基本原则 每次 commit 只能做一件事commit 不能破坏构建所有代码都是二等分的永远不要 rebase 公共分支Git 正确合并保留定义明确的 commit 日志持续测试和集成# 每次 commit 只能做一件事 Linux 的中心原则是,所有更改都必须分解为小步骤进行 —— 您的每个 commit 都只能做一件事。这并不...

薛定喵君的博客 2414

Git版本控制流程和对分支的理解

git版本控制流程,merge和rebase,git分支切换

Playepineapple的博客 394
上一篇: 【Git 内部原理】`.git` 是怎么记住所有版本的
下一篇: 【Git基础】03——Git 撤销与回退:改错了怎么办
未收敛
博客等级 码龄11年 3303粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未收敛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值