Git 学习笔记

这篇笔记记录了我在git学习中常常用到的指令,方便在未来进行查阅。此篇文章也会根据笔者的学习进度持续更新。

网站分享

Git 常用命令大全

Learn Git Branching

基础

$ git init     //在当前位置配置一个git版本库

$ git add <file>     //将文件添加至暂存区

$ git add .          //将文件夹中的所有内容添加至暂存区

$ git commit         //将暂存区的内容提交至库中

$ git commit -m "<注释内容>"     //提交的同时添加注释(即提交信息)

$ git status    //查看暂存区中的内容

$ git log    //查看提交记录

其实每一个提交记录都可以看作一个“快照节点”,像一个相片一样记录的当前库内容的所有细节,方便我们恢复到对应提交节点的内容。

每一个这样的节点对应一个又长又复杂的哈希值,用来索引这些提交。

这个过程中可能会进入Vim编辑器,在按下ESC后切换至命令行模式,输入“:wq”即可保存并退出。

git log展示是可能会进入less分页器,按下q键即可退出。

分支

在我们的提交树中,总是有一个名为HEAD的指针指向我们的提交,其所指的地方常常使我们指令所作用的地方。HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。

$ git branch      //展示所有分支,带*的是HEAD所在的位置

$ git branch <branch_name>      //创建分支,默认为当前提交上

$ git branch <branch_name> <hash>      //在指定提交节点上创建分支

$ git branch -d <branch_name>      //将分支删除

$ git branch -f <branch_name> <hash>       //将分支强制移动到某提交上

其实HEAD的实质也是一个哈希值,一般在需要用到哈希值时,可以使用相对位置。如HEAD~就是HEAD的父提交节点。HEAD~2就是父的父。HEAD^就是父。HEAD^2是第二个父(多个父节点时)。在使用merge合并两个分支后,“将目标分支并入当前分支”的“当前分支”就是第一个父parent,“目标分支”就是第二个父,即^2。

$ git merge <branch_name>      //将目标分支并入当前分支(多条路径)

$ git rebase <branch_name>      //将目标分支嵌入当前分支(一条路径)

$ git rebase <branch_name_1> <branch_name_2>  //将分支1嵌入分支2

在并入分支时可能会产生冲突,命令行中显示“MERGING”的字样,这是需要手动在对应文件做出更改,然后再通过add指令和commit指令重新提交。

$ git checkout <branch_name>/<hash>        //将HEAD移动至目标提交(检出)

$ git checkout -b <branch_name>        //创建新分支并检出,即HEAD到此分支上

$ git reset <hash>         //真撤销

$ git revert <hash>        //假撤销,相当于是做了一个回到上一提交的提交

$ git log --oneline --graph --decorate --all      //可视化查看提交树

修改提交

$ git commit --amend          //可以修改提交信息,可通过该命令添加遗漏文件

$ git commit --amend -m "<新的提交信息>"        //直接修改提交信息

$ git cherry-pick <hash>        //将对应的提交节点复制为新的提交节点

$ git cherry-pick <hash1> <hash2>        //依次生成新创建,<hash>可以是分支或HEAD

$ git rebase -i <hash>          //修改范围内的提交

这个指令会让我们进入Vim编辑器,此时按下“i”、“a”、“s”进入编辑模式,按ESC退出该模式。在编辑模式可以对各个节点进行替换删除等操作,将每个提交前的“pick”替换为其他指令可以产生对应的效果,这些指令都写在下方的注释中。

标签

因为分支是需要我们不断操作移动的,而不是固定在某一提交上的,所以就需要用“标签”来标识重要的提交。标签的内容通常就是版本号,格式一般为 [ v <主版本号> . <次版本号> . <修订号> ] ,修订号的更新通常是修复了某些bug或者优化了某些内容,次版本号更新会添加一些功能但与老版本兼容,主版本号通常用于重大更新,调整范围较大,新老版本不兼容。一般非正式发布的都采用v0.x.x,第一个正式发布的项目一般为 v1.0.0 。

$ git tag          //查看所有标签

$ git tag <tag_name>        //默认在HEAD提交节点上添加标签(无注解,称为轻标签)

$ git tag -a <tag_name>         //启用编辑,添加注解(称为注解标签)

$ git tag -am "<注解>" <tag_name>        //创建标签的同时添加注解(-m用于编辑信息)

$ git tag <tag_name> <hash>        //指定提交节点

$ git tag -d <tag_name>        //删除标签

$ git describe           //描述离默认的HEAD最近的标签信息,只能描述注解标签

$ git describe <hash>       //描述离目标提交最近的标签信息

小结

这篇文章将会作为动态笔记记录,我将把我在日常开发中可能用到的指令更新在这里,方便查阅与使用。

如有补充纠正欢迎留言。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dynamics365 ExportPdfTemplateExportWordTemplate两个Action调用的body构造

这两天在用ExportPdfTemplate做pdf导出功能时&#xff0c;遇到了如下问题InnerException : Microsoft.OData.ODataException: An unexpected StartArray node was found when reading from the JSON reader. A PrimitiveValue node was expected. 我的场景是使用power automate…

经典算法 判断一个图是不是树

判断一个图是不是树 问题描述 给一个以0 0结尾的整数对列表&#xff0c;除0 0外的每两个整数表示一条连接了这两个节点的边。假设节点编号不超过100000大于0。你只要判断由这些节点和边构成的图是不是树。是输出YES&#xff0c;不是输出NO。 输入样例1 6 8 5 3 5 2 6 4 5…

【嵌入式八股2】C++:STL容器与算法

1. STL常见容器及其内部实现的数据结构 序号 名称 描述 存储结构 常用方法和操作 1vector动态分配的数组顺序数组&#xff08;array&#xff09;v.push_back(), v.pop_back(), v.insert(), v.erase(), v.capacity(), v.size(), v.at(idx), v.front(), v.back()2list双向链表离…

vmcore分析锁问题实例(x86-64)

问题描述&#xff1a;系统出现panic&#xff0c;dmesg有如下打印&#xff1a; [122061.197311] task:irq/181-ice-enp state:D stack:0 pid:3134 ppid:2 flags:0x00004000 [122061.197315] Call Trace: [122061.197317] <TASK> [122061.197318] __schedule0…

在Apple Silicon上部署Spark-TTS:四大核心库的技术魔法解析!!!

在Apple Silicon上部署Spark-TTS&#xff1a;四大核心库的技术魔法解析 &#x1f680; &#xff08;M2芯片实测&#xff5c;Python 3.12.9PyTorch 2.6.0全流程解析&#xff09; 一、核心库功能全景图 &#x1f50d; 在Spark-TTS的部署过程中&#xff0c;pip install numpy li…

leetcode03 -- 武汉旅游查询系统

武汉旅游查询系统 1 界面展示 1.首页地图界面 2.查找功能 在查找框内输入查找的景点名称 查找到的景点在地图上进行定位,右侧展示景点的详细信息。 3.添加景点功能 在地图上点击某个位置,系统弹出一个输入框供用户填写景点的名称和描述。 在弹出的输入框中输入景点名…

玩机进阶教程----MTK芯片设备刷机导致的死砖修复实例解析 连电脑毫无反应 非硬件问题

在高通芯片机型中,我们可以通过短接主板测试点来激活高通芯片特有的9008底层端口来刷写救砖固件。但通常MTK芯片类的设备联机电脑即可触发深刷模式。但有些例外的情况会导致链接电脑毫无反应。遇到类似故障的友友可以参阅此博文尝试解决。 通过博文了解 1💝💝💝-----实…

09-设计模式企业场景 面试题-mk

文章目录 1.工厂(方法)模式1.1.简单工厂模式(不是设计模式,是编程习惯)1.2.工厂方法模式(企业开发中最常见)1.3.抽象工厂模式2.策略模式2.1.登录案例(工厂模式+策略模式)3.责任链设计模式4.单点登录怎么是实现的?5.权限认证是如何实现的6.上传数据的安全性你们怎么控…

BUUCTF-Web(1-20)

目录 一.SQL注入 (1)[极客大挑战 2019]EasySQL 万能密码 (7)[SUCTF 2019]EasySQL 堆叠注入 解一&#xff1a; 解二&#xff1a; (10)[强网杯 2019]随便注 堆叠注入 解一&#xff1a; 解二&#xff1a; 解三&#xff1a; (8)[极客大挑战 2019]LoveSQL 联…

软件包安装管理Gitlab

官方提供了非常详尽的系统及自动化脚本安装教程 Gitlab官网下载地址&#xff1a;https://gitlab.cn/install/ 1、安装配置 今天我们说一下包安装管理&#xff0c;这样方便我们自己更精确的制定符合我们自己需要的Gitlab仓库 配置&#xff1a;ubuntu2004(focal) 4C8G 下载程…

hadoop执行sqoop任务找不到jar

sqoop:1.4.7 hadoop:3.4.1 数据:oracel-hdfs 2025-04-15 16:57:00,850 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7 2025-04-15 16:57:00,901 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead. 2025-04-15 …

空地机器人在复杂动态环境下,如何高效自主导航?

随着空陆两栖机器人(AGR)在应急救援和城市巡检等领域的应用范围不断扩大&#xff0c;其在复杂动态环境中实现自主导航的挑战也日益凸显。对此香港大学王俊铭基于阿木实验室P600无人机平台自主搭建了一整套空地两栖机器人&#xff0c;使用Prometheus开源框架完成算法的仿真验证与…

MCP调用示例-GitHub仓库操作

在上一篇文章MCP核心概念和应用 ———AI 大模型的标准化工具箱里&#xff0c;我们讲述了MCP的安装&#xff0c;现在让我们试一试通过示例了解它的功能吧&#xff01; 首先确保你已经有了相应的APIKEY。 &#x1f4a1;大模型中转API推荐 ✨中转使用教程 1、点击界面上的 「Done…

zk源码—5.请求的处理过程一

大纲 1.服务器的请求处理链 (1)Leader服务器的请求处理链 一.PrepRequestProcessor请求预处理器 二.ProposalRequestProcessor事务投票处理器 三.SyncRequestProcessor事务日志处理器 四.AckRequestProcessor投票反馈处理器 五.CommitProcessor事务提交处理器 六.ToBeA…

小程序获取用户总结(全)

获取方式 目前小程序获取用户一共有3中(自己接触到的),但由于这个API一直在改,所以不确定后期是否有变动,还是要多关注官方公告。 方式一 使用wx.getUserInfo 实例: wxml 文件<button open-type="getUserInfo" bindgetuserinfo="onGetUserInfo&quo…

[LeetCode 1871] 跳跃游戏 7(Ⅶ)

题面&#xff1a; 数据范围&#xff1a; 2 ≤ s . l e n g t h ≤ 1 0 5 2 \le s.length \le 10^5 2≤s.length≤105 s [ i ] s[i] s[i] 要么是 ′ 0 ′ 0 ′0′ &#xff0c;要么是 ′ 1 ′ 1 ′1′ s [ 0 ] 0 s[0] 0 s[0]0 1 ≤ m i n J u m p ≤ m a x J u m p <…

【Linux】基础 IO(文件描述符、重定向、缓冲区)

Linux 1.理解文件2.C文件接口1.打开 写文件2.读文件 简单实现cat命令3.输出信息到显示器的方式4.stdin、stdout、stderr5.打开文件的方式 3.系统接口 IO1.传递标志位2.open、close3.write、read 4.文件描述符1.是什么&#xff1f;2.分配规则3.重定向原理4.通过dup2系统调用重…

Apache Doris SelectDB 技术能力全面解析

Apache Doris 是一款开源的 MPP 数据库&#xff0c;以其优异的分析性能著称&#xff0c;被各行各业广泛应用在实时数据分析、湖仓融合分析、日志与可观测性分析、湖仓构建等场景。Apache Doris 目前被 5000 多家中大型的企业深度应用在生产系统中&#xff0c;包含互联网、金融、…

交换机与路由器的默契配合:它们的联系与区别

交换机与路由器的默契配合&#xff1a;它们的联系与区别 一. 交换机与路由器的基本功能1.1 交换机的功能1.2 路由器的功能 二. 交换机和路由器的区别三. 交换机和路由器的联系3.1 数据转发的协作3.2 网络分段与分隔3.3 协同工作提供互联网接入 四. 交换机和路由器的联合应用场景…

【计算机系统结构】MIPSsim

目录 双击MIPSsim.exe 问题1&#xff1a;Microsoft Defender SmartScreen阻止了无法是被的应用启动&#xff0c;运行此应用可能会导致你的电脑存在风险 解决 出现下面的问题的话&#xff0c;建议直接在官网下载 问题2&#xff1a;.NET Framework 3.5安装错误代码0x80240438 …