git基础指令总结持续更新之git分支简介和基本操作,解决合并和冲突,回退和rebase(变基),分支命名和分支管理,学习笔记分享

git 分支简介和基本操作

Git 分支是 Git 的核心特性之一,它允许开发者在不同的开发线上工作,而不会影响主代码库。以下是 Git 分支的简介和一些基本操作:

分支的概念:

分支是 Git 中的一个独立开发线。创建分支时,Git 会记录当前的状态并创建一个新的开发线。分支允许开发者进行实验或修复错误,而不会影响主分支(通常是 master 或 main)。

分支的类型:

  • 本地分支:仅在本地仓库中存在,未推送到远程仓库。
  • 远程分支:由远程仓库推送更新而来,通常以 origin/ 前缀表示。
  • 跟踪分支:与远程分支相关联的本地分支,可以自动与远程分支进行合并。

分支的优点:

  • 允许同时进行多个任务或修复。
  • 便于代码审查和合并。
  • 可以安全地进行实验性开发。

基本操作

创建分支:

git branch <branch-name>:创建一个新分支。
git checkout -b <branch-name>:创建新分支并切换到该分支。

切换分支:

git checkout <branch-name> 或者 git switch <branch-name>:切换到指定分支。

查看分支:

git branch:列出所有本地分支。
git branch -a:列出所有本地和远程分支。

合并分支:

git merge <branch-name>:将指定分支的更改合并到当前分支。

删除分支:

git branch -d <branch-name>:删除本地分支(已合并)。

git branch -D <branch-name>:删除未合并分支

git push <remote-name> :<branch-name>:删除远程分支。

推送分支到远程仓库:

git push <remote-name> <branch-name>:将本地分支推送到远程仓库。

拉取远程分支更新:

git pull:拉取远程分支的最新更改并自动合并到当前分支。

设置跟踪分支:

git branch --set-upstream-to=<remote>/<branch-name>:设置当前分支的上游分支。

查看分支合并图:

git log --graph --decorate --oneline --all:以图形方式显示分支的合并历史。

使用分支可以提高开发效率,允许多个开发者同时在不同功能或修复上工作,最终通过合并将更改集成到一起。正确使用分支是 Git 工作流程的关键部分。

解决合并和冲突

当合并时出现冲突,Git 会停止合并并让开发者手动解决冲突。解决后,使用 git add 将解决后的文件暂存,然后 git commit 提交更改。

总结:
两个分支未修改同一个文件的同一处位置:git自动合并
两个分支修改了同一个文件的同一处位置:产生冲突

解决方案:
1.手工修改冲突文件,合并冲突内容
2.添加至暂存区 git add file
3.提交修改 git commit -m "message"

中止合并:当不想继续执行合并操作时可以使用下面的命令来中止合并过程。git merge --abort

回退和rebase(变基)

在 Git 中,回退(Revert)和变基(Rebase)是两种不同的操作,它们都可以用来修改或改进提交历史,但它们的目的和工作方式有所不同。

Git 回退(Revert)

定义:回退是一个安全的操作,用来撤销一个或多个已经存在的提交。它会创建一个新的提交,这个提交是被撤销提交的逆操作。这意味着回退不会改变历史,而是在历史中添加一个新的提交来“反做”之前的更改。

使用场景:

  • 当你想要撤销一个已经合并到主分支的提交,但这个提交可能已经被其他分支或开发者所依赖。
  • 当你想要撤销一个错误的提交,但不想重新编写历史。

命令:
git revert <commit-hash>:撤销单个提交。
git revert --no-commit <commit-hash>:执行变更但不立即提交,允许进一步修改。

特点:

  • 回退操作是可逆的,即你可以再次回退一个回退操作。
  • 它不会改变历史,因此对于共享分支来说是一个安全的选择。

Git 变基(Rebase)

定义:变基是一个更激进的操作,它将一系列的提交从一个分支上摘下来,然后应用到另一个分支上。这可以用来整合来自不同分支的更改,或者清理提交历史。

使用场景:

  • 当你想要更新你的分支以包含主分支的最新更改,同时保持你的提交独立。
  • 当你想要清理或重新排序提交,例如在提交被推送之前。

命令:
git rebase <base-branch>:将当前分支的提交变基到 。

特点:

  • 变基可能会引入合并冲突,需要手动解决。
  • 它可以改变历史,因此在已经共享的分支上使用时需要谨慎。
  • 变基可以是交互式的,允许你编辑、合并或删除提交。

总结

回退是一个安全的操作,用于撤销已经发生的更改,而不会改变历史。

变基是一个更灵活的操作,可以用来整合更改或清理提交历史,但它可能会改变历史,因此在团队协作中使用时需要小心。

选择使用回退还是变基,取决于你的具体需求和团队的工作流程。在团队中,通常建议使用回退来撤销已经合并的更改,而使用变基来更新和清理尚未合并的分支。

分支命名和分支管理

分支命名规范

推荐使用带有意义的描述性名称来命名分支:

  • 使用有意义的名称,确保分支名称能够描述分支的目的,例如 feature/login-page 或 bugfix/issue-123。
    避免使用主分支名称:

  • 不要使用 master 或 main 作为其他分支的名称,以避免混淆。
    使用小写字母:

  • 分支名称通常使用小写字母,避免使用大写字母。
    使用连字符或下划线:

  • 使用连字符(-)或下划线(_)来分隔单词,例如 user-profile 或 user_profile。
    避免使用特殊字符:

  • 不要在分支名称中使用空格或特殊字符,这可能会导致命令行问题。
    分支类型:

根据分支的用途,可以有不同的命名约定。例如:

feature/:新功能开发。
bugfix/
:修复错误。
release/:准备发布的版本。
hotfix/
:紧急修复。
版本号:

对于发布分支,可以在名称中包含版本号,例如 release/1.2.0

分支管理

  • 创建分支:
    在创建新分支之前,确保你的本地仓库是最新的,通过 git pull 获取最新更改。

  • 定期拉取更新:
    在分支开发过程中,定期拉取远程分支的更新,通过 git pull 或 git fetch 避免长时间未同步。

  • 合并还是变基:
    决定是使用 git merge 来合并更改,还是使用 git rebase 来整合更改并保持线性历史。

  • 代码审查:
    在合并到主分支之前,确保代码经过了审查,可以使用 Pull Request 进行代码审查。

  • 删除分支:
    一旦分支的目的已经完成并且合并到了主分支,使用 git branch -d 删除本地分支,使用 git push --delete 删除远程分支。

  • 避免在主分支上直接开发:
    避免在 master 或 main 分支上直接进行开发,所有的开发工作都应该在分支上完成。

  • 使用分支策略:
    采用分支策略,如 Git Flow 或 GitHub Flow,以标准化分支的创建、合并和管理流程。

  • 保持分支简洁:
    尽量保持分支的生命周期短且目的单一,避免一个分支用于多个不相关的功能。

  • 沟通协作:
    在团队中明确沟通分支的使用和合并策略,确保所有成员都遵循相同的工作流程。

  • 分支保护规则:
    对于重要的分支(如 master 或 main),可以设置保护规则,要求 Pull Request 必须经过审查和测试。

定期合并已经成功验证的分支,及时删除已经合并的分支保持合适的分支数量,为分支设置合适的管理权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1474026.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

SQL脚本初始化数据

创建或选择某个数据库&#xff0c;运行窗口输入&#xff1a;source,再拖入文件&#xff0c;回车即可&#xff1b; 虽然也可以使用图形化工具初始化数据&#xff0c;但是他会有内存限制&#xff0c;也就是较大的sql文件不可以初始化&#xff0c;而运行窗口没有sql文件大小限制&…

纹波和噪声的介绍以及区别

纹波和噪声的介绍 纹波和噪声都是在电源输出中出现的信号波动&#xff0c;但两者存在明显的区别。   纹波&#xff1a;是附着于直流电平之上的包含周期性与随机性成分的杂波信号。在额定输出电压、电流的情况下&#xff0c;纹波指的是输出电压中的交流电压的峰值 。狭义上的纹…

[Godot3.3.3] – 人物死亡动画 part-2

前言 在上一个 part 中已经完成了大部分的逻辑&#xff0c;现在进行一些新的修改。 增加重力 首先将 PlayerDeath 中的 AnimationPlayer 设置为自动播放。 返回 PlayerDeath.gd 并增加一个重力 300&#xff0c;防止玩家的尸体腾空运动。 var gravity 1000 _process 函数中…

短信验证码实现

一、设置AccessKey 创建用户并配置使用权限&#xff0c;使我们拥有调用 aliyunAPI 的权限&#xff0c;之后会生成 AccessKeyID 和 AccessKey密码&#xff0c;后面我们会使用到。需要注意的是 AccessKeyID 和 AccessKey密码生成后我们需要将他保存起来&#xff0c;否则后期无法查…

基于Android Studio订餐管理项目

目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 能够实现登录&#xff0c;注册、首页、订餐、购物车&#xff0c;我的。 用户注册后&#xff0c;登陆客户端即可完成订餐、浏览菜谱等功能&#xff0c;点餐&#xff0c;加入购物车&#xff0c;结算&#xff0c;以及删减…

非NI GPIB卡与LabVIEW兼容性分析

在许多测试和测量应用中&#xff0c;通用接口总线&#xff08;GPIB&#xff09;是一种广泛使用的标准。尽管国家仪器公司&#xff08;NI&#xff09;提供的GPIB硬件和LabVIEW软件的组合被广泛接受和使用&#xff0c;但成本可能较高。因此&#xff0c;一些用户会考虑使用其他厂商…

科研绘图系列:R语言两组数据散点分布图(scatter plot)

介绍 展示两组数据的散点分布图是一种图形化表示方法,用于显示两个变量之间的关系。在散点图中,每个点代表一个数据点,其x坐标对应于第一组数据的值,y坐标对应于第二组数据的值。以下是散点图可以展示的一些结果: 线性关系:如果两组数据之间存在线性关系,散点图将显示出…

基于机器学习(霍特林统计量,高斯混合模型,支持向量机)的工业数据异常检测(MATLAB R2021B)

近年来&#xff0c;隨着集散控制系统、工业物联网、智能仪表等信息技术在现代工业生产系统中的应用&#xff0c;生产过程的运行状态能够以大量数据的形式被感知和记录。基于数据的故障诊断方法以过程数据为基础&#xff0c;采用统计分析、统计学习、信号处理等方法&#xff0c;…

DNS正向解析与反向解析实验

正向解析 安装bind软件 [rootlocalhost ~]# dnf install bind bind-utils -y修改主配置文件/etc/named.conf [rootlocalhost ~]# vim /etc/named.conf重启DNS服务&#xff08;named&#xff09; [rootlocalhost ~]# systemctl restart named编辑数据配置文件。在/var/named…

从零开始读RocketMq源码(一)生产者启动

目录 前言 获取源码 总概论 生产者实例 源码 A-01:设置生产者组名称 A-02:生产者服务启动 B-01&#xff1a;初始化状态 B-02&#xff1a;该方法再次对生产者组名称进行校验 B-03&#xff1a;判断是否为默认生产者组名称 B-04: 该方法是为了实例化MQClientInstance对…

Matplotlib Artist Axes

在简介里介绍了很多了&#xff0c;这里补充一点 Axes包含一个属性patch&#xff0c;是Axes对应的方框&#xff0c;可以用来设置Axes的相关属性 ax fig.add_subplot() rect ax.patch # a Rectangle instance rect.set_facecolor(green) Axes有以下方法 Axes helper metho…

MYSQL的简易安装

先下载好安装包 官网&#xff1a;https://www.mysql.com 双击运行进入界面 打开之后将左侧的产品移到右侧 点击使用的产品设置路径 之后一直下一步即可 选择主机类型 同时要记住端口号 设置密码 设置系统服务列表中的服务名称 之后一直下一步就可以了 安装完成记得配置环…

.mkp勒索病毒:深度解析与防范

引言&#xff1a; 在数字化时代&#xff0c;网络安全问题日益严峻&#xff0c;其中勒索病毒作为一种极具破坏性的恶意软件&#xff0c;严重威胁着个人用户和企业机构的数据安全。在众多勒索病毒家族中&#xff0c;.mkp勒索病毒以其强大的加密能力和广泛的传播方式&#xff0c;成…

第二次练习

目录 一、student表的增删改查 1.向student表中添加一条新记录 2. 向student表中添加多条新记录 3.向student表中添加一条新记录 4.更新表&#xff0c;grade 大于90的加0.5 5.删除成绩为空的记录 二、用户权限部分 1、创建一个用户test1使他只能本地登录拥有查询student表的权…

http读书笔记

持久化 HTTP/1.1 和一部分的 HTTP/1.0 想出了 持久连接&#xff08;HTTP Persistent Connections&#xff0c; 也称为 HTTP keep-alive 或 HTTP connection reuse&#xff09; 的方法。 持久连接的特点是&#xff0c; 只要任意一端 没有明确提出断开连接&#xff0c; 则保持 T…

信用卡没逾期就万事大吉了吗?

6月28日&#xff0c;中国人民银行揭晓了《2024年第一季度支付体系概览》&#xff0c;数据显示&#xff0c;截至本季度末&#xff0c;信用卡及借贷合一卡的总量为7.6亿张&#xff0c;与上一季度相比&#xff0c;这一数字微降了0.85个百分点。同时&#xff0c;报告还指出&#xf…

【Unity】unity学习扫盲知识点

1、建议检查下SystemInfo的引用。这个是什么 Unity的SystemInfo类提供了一种获取关于当前硬件和操作系统的信息的方法。这包括设备类型&#xff0c;操作系统&#xff0c;处理器&#xff0c;内存&#xff0c;显卡&#xff0c;支持的Unity特性等。使用SystemInfo类非常简单。它的…

HTML5使用<progress>进度条、<meter>刻度条

1、<progress>进度条 定义进度信息使用的是 progress 标签。它表示一个任务的完成进度&#xff0c;这个进度可以是不确定的&#xff0c;只是表示进度正在进行&#xff0c;但是不清楚还有多少工作量没有完成&#xff0c;也可以用0到某个最大数字&#xff08;如&#xff1…

ctfshow web sql注入 web242--web249

web242 into outfile 的使用 SELECT ... INTO OUTFILE file_name[CHARACTER SET charset_name][export_options]export_options:[{FIELDS | COLUMNS}[TERMINATED BY string]//分隔符[[OPTIONALLY] ENCLOSED BY char][ESCAPED BY char]][LINES[STARTING BY string][TERMINATED…

C++11|包装器

目录 引入 一、function包装器 1.1包装器使用 1.2包装器解决类型复杂 二、bind包装器 引入 在我们学过的回调中&#xff0c;函数指针&#xff0c;仿函数&#xff0c;lambda都可以完成&#xff0c;但他们都有一个缺点&#xff0c;就是类型的推导复杂性&#xff0c;从而会…