【嵌入式】git工具基础命令学习笔记 | 嵌入式Linux

news2024/11/19 1:51:47

文章目录

  • 前言
  • 一、git基础指令
  • 二、git分支管理
    • 2.1、一些基础命令
    • 2.2、时间回溯
    • 2.3、新建分支,删除分支,重命名分支


前言

参考:飞凌嵌入式ElfBoard ELF-1 软件学习手册
chatGPT

一、git基础指令

首先我们新建一个名叫git的文件夹,在里面创建一个main.c,后续就以这个C文件为例子进行git管理:

在这里插入图片描述
首先检查ubuntu虚拟机上的git版本是不是最新的:

sudo apt-get install git

很好,已经是最新的了:
在这里插入图片描述
启动命令:

git init

git init 是一个Git命令,用于在当前目录中创建一个新的Git仓库。这个命令会在当前目录下生成一个隐藏文件夹.git,用于存储Git仓库的配置信息和版本历史等内容。执行这个命令后,你就可以开始使用Git来进行版本控制了。
我们使用ls- a 就能看到.git的隐藏文件:

ls -a

在这里插入图片描述
然后我们添加用户名和邮箱:

git config --global user.name "XXX"
git config --global user.email "XXX"

git config --global user.name “XXX” 和 git config --global user.email “XXX” 命令用于设置 Git 用户的全局配置,其中 “XXX” 分别是你的用户名和邮箱。这两个配置信息将被用于每次你提交代码时的作者信息。
在这里插入图片描述

紧接着添加main.c到git仓库的暂存区:

git add main.c

在这里插入图片描述
git add main.c 命令用于将文件 main.c 添加到Git的暂存区。在执行这个命令后,main.c 的当前状态将被记录在Git的暂存区中,等待进一步的提交。这样做是为了将文件的更改纳入到下一次提交中。在执行 git add 之后,你可以使用 git commit 命令来提交这些更改。 注意噢,这里只是暂存区,还没提交

这时我们可以使用命令来查看一下暂存区的状态变化

git status

在这里插入图片描述
git status 命令用于显示工作目录和暂存区的状态。
截图的意思是:你当前处于一个新的Git仓库,且在master分支上有一些文件已经添加到了暂存区,其中包括一个新文件 main.c。如果你希望取消暂存某个文件,可以使用 git rm --cached 命令。
接下来,你可以执行 git commit 命令来提交这些更改。执行 git commit 后,Git将会要求你输入本次提交的相关信息,例如提交消息等。

接下来我们提交一下:

git commit -m "instial program"

git commit -m “instial program” 是一个用于提交代码更改到 Git 版本控制系统的命令。这个命令包含了两个主要部分:

git commit: 这个部分告诉 Git 你想要创建一个新的提交,将当前更改保存到版本历史中。

-m “instial program”: 这是一个选项 -m,用于在命令行中指定提交的消息或说明。在这个例子中,提交消息是 “instial program”,它描述了这个提交所做的更改或者提交的目的。 git commit -m “xxx” 命令中的双引号里的 “xxx” 部分是你需要填写的提交消息。这个消息应该简要地描述你在这次提交中所做的更改或者添加的功能。这样的提交消息可以帮助你和其他团队成员更容易地理解每次提交的目的,也方便在版本历史中追踪和管理代码变更。所以,请将实际的更改内容或者相关信息替代 “xxx” 部分。
在这里插入图片描述
我们再查看一下状态:
在这里插入图片描述
这会的输出中,它显示了你当前所在的分支是 master,并提示 “nothing to commit, working directory clean”,这意味着你的工作目录是干净的,没有未提交的更改。

我们还可以使用以下命令来查看提交记录信息:

git log

git log 命令用于显示版本提交历史记录。当你运行这个命令时,会显示每次提交的详细信息,包括提交者、提交日期、提交的哈希值以及提交消息。
在这里插入图片描述
这里的输出表示:你的 git log 输出显示了一个提交,哈希值为 dd73feaa05ff6f7e5b3b52b4e878c2101aab1272,作者为 elf_li,提交日期为 Mon Jan 8 12:04:00 2024 +0800,并且提交消息是 “instial program”

二、git分支管理

2.1、一些基础命令

使用以下命令查看本地分支

git branch

在这里插入图片描述
目前在主分支

查看一下状态:
在这里插入图片描述
现在我们修改一下文件:(新建一个main1.c 删除main.c)(现在是工作区出现了更改
在这里插入图片描述

git rm main.c
git add main1.c

删除名为 main.c 的文件,然后将名为 main1.c 的文件添加到暂存区。
在这里插入图片描述
然后我们提交:

git commit -m "delete main.c_add main1.c"

在这里插入图片描述
这段话是关于一个 Git 提交的信息。它表示你进行了一次提交,其中删除了一个名为 main.c 的文件,并创建了一个名为 main1.c 的新文件。这次提交共影响了两个文件,删除了 5 行内容,并且对文件的模式进行了更改。

值得注意的是,这里经常报这个错误:
error: bad index file sha1 signature
fatal: index file corrupt
一般我重新运行一下命令就可以成功,第一遍打命令都要报错 我也不知道为啥

然后这个命令是看一下:

git show

git show 命令用于显示一个或多个 Git 对象的详细信息,包括提交的更改、作者、提交时间等。如果你在命令行中运行 git show,它将显示最新的提交的详细信息。
在这里插入图片描述

git show --stat

git show --stat 命令用于显示提交的摘要信息和更改的统计信息。它会展示每个修改过的文件的简略统计,包括插入和删除的行数。
请添加图片描述

git log 

命令用于显示提交历史记录。
在这里插入图片描述
这里有两个提交,每个提交包括了提交的哈希值、作者、日期和提交消息。第一个提交删除了 main.c 文件并添加了 main1.c 文件,而第二个提交是初始化程序。

git show dd73feaa05ff6f7e5b3b52b4e878c2101aab1272

git show [commitid]查看某次提交的具体修改内容
在这里插入图片描述
还可以加上 --stat:

git show dd73feaa05ff6f7e5b3b52b4e878c2101aab1272 --stat

在这里插入图片描述

2.2、时间回溯

git reset --hard 是一个 Git 命令,用于将你的工作目录、暂存区和当前分支都回退到指定的提交或分支,这个操作会丢弃所有未提交的更改和历史记录

git reset --hard dd73feaa05ff6f7e5b3b52b4e878c2101aab1272

git reset --hard dd73feaa05ff6f7e5b3b52b4e878c2101aab1272 命令将工作区和暂存区都回退到指定的提交 dd73feaa05ff6f7e5b3b52b4e878c2101aab1272,并且丢弃之后的所有提交。
这个命令的效果是非常强烈的,它会使你的工作目录和暂存区的所有更改都回到指定提交的状态。在使用这个命令之前,请确保你理解它的影响,因为它会永久性地丢弃所有在指定提交之后的更改。
以下是实验效果:
在这里插入图片描述

2.3、新建分支,删除分支,重命名分支

创建新分支并切换到该分支的命令如下:

git checkout -b test

以下是实验结果:
在这里插入图片描述
给分支改名:

git branch -m test project_test

在这里插入图片描述
删除分支:

git branch -d test

在这里插入图片描述

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

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

相关文章

【Java集合篇】HashMap的put方法是如何实现的?

HashMap的put方法是如何实现的 ✔️典型解析✔️ 拓展知识仓✔️HashMap put方法的优缺点有哪些✔️如何避免HashMap put方法的哈希冲突✔️如何避免HashMap put方法的哈希重 ✔️源码解读✔️putVal 方法主要实现如下,为了更好的帮助大家阅读,提升效率&…

MySql01:初识

1.mysql数据库2.配置环境变量3. 列的类型和属性,索引,注释3.1 类型3.2 属性3.3 主键(主键索引)3.4 注释 4.结构化查询语句分类:5.列类型--表列类型设置 1.mysql数据库 数据库: ​ 数据仓库,存储数据,以前我…

物理实验2023年下B卷部分题目总结

物理实验考试每个实验的题目由5个题变成8个题了QAQ 交直流电桥 1.惠斯通电桥不适于阻值较低(1欧以下)电阻的原因 2.立式电桥与卧式电桥的比较(灵敏度、准确度、测量范围) 3.交流电桥平衡法测电容的电路接线 4.铜热电阻、热敏…

Qt 6之五:创建菜单

Qt 6之五:创建菜单 Qt是一种跨平台的C应用程序开发框架,它提供了一套丰富的工具和库,可以帮助开发者快速构建跨平台的应用程序,用于开发图形用户界面(GUI)和非GUI应用程序。 Qt 6之一:简介、安…

初识大数据,一文掌握大数据必备知识文集(15)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

Kafka与RabbitMQ的区别

消息队列介绍 消息队列(Message Queue)是一种在分布式系统中进行异步通信的机制。它允许一个或多个生产者在发送消息时暂时将消息存储在队列中,然后由一个或多个消费者按顺序读取并处理这些消息。 消息队列具有以下特点: 异步通…

STM32F103C8T6(HAL库函数 - 内部Flash操作)

简介 STM32F103C8T6 内部Flash 为 64KB,本次将对他多余空间进行读写。 介绍 数据手册下载 STM32F103x8/STM32F103xB 数据手册 包含Flash Memory Page分布 STM32F设备命名 设备容量类型 中容量类型 内部空间介绍 64 KBytes大小Flash Memory 从 0x0800 0000 ~…

Mysql-排序查询方法

接上篇Mysql数据库的基础操作-CSDN博客 25. 基础-SQL-DCL-权限控制-_哔哩哔哩_bilibili 1、排序语法 2、查询结果示例 这个查询结果,因为特意选的age18 的数据来统计,所以当每一条数据的age一样时,使用worknno进行排序。可以看到work的升序和…

智能监控:业务监控新选择,效率提升新动力

前言 随着科技的飞速发展,企业对于业务的稳定性和连续性要求越来越高。传统的监控方式虽然在一定程度上能够保证业务的正常运行,但在面对复杂多变的业务场景和日益增长的数据量时,往往显得力不从心。为了解决这一问题,观测云在提…

NUXT3学习笔记

1.邂逅SPA、SSR 1.1 单页面应用程序 单页应用程序 (SPA) 全称是:Single-page application,SPA应用是在客户端呈现的(术语称:CSR(Client Side Render)) SPA的优点 只需加载一次 SPA应用程序只需…

迎接人工智能的下一个时代:ChatGPT的技术实现原理、行业实践以及商业变现途径

课程背景 2023年,以ChatGPT为代表的接近人类水平的对话机器人,AIGC不断刷爆网络,其强大的内容生成能力给人们带来了巨大的震撼。学术界和产业界也都形成共识:AIGC绝非昙花一现,其底层技术和产业生态已经形成了新的格局…

Linux-添加虚拟内存,不添加硬盘方式操作

在linux中,当物理内存mem不足时,就会使用虚拟内存(swap分区) 例如增加2G虚拟内存,操作如下: 1.查看内存大小 [rootlocalhost ~]# free -m 2.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的cou…

探索区块链的未来:Ignis的母子架构进展与模块化区块链趋势

随着区块链技术的不断演进,模块化区块链成为热点,而其高拓展性的优点早在Ignis公链的母子架构上就已经实现。本文将探讨这两个方面,揭示它们如何推动区块链技术向前发展。 模块化区块链的兴起与Celestia 模块化区块链通过将不同的功能分解为…

开源C语言库Melon:Cron格式解析

本文介绍开源C语言库Melon的cron格式解析。 关于 Melon 库,这是一个开源的 C 语言库,它具有:开箱即用、无第三方依赖、安装部署简单、中英文文档齐全等优势。 Github repo 简介 cron也就是我们常说的Crontab中的时间格式,格式如…

一起来了解综合能源服务认证

首先,综合能源服务认证是有国家政策支持的, 《能源生产和消费革命战略(2016-2030)》中指出:1、能源生产端要以绿色低碳为方向,推动能源集中式和分布式开发并举,大幅提高新能源和可再生能源比重&#xff1b…

Async In C#5.0(async/await)学习笔记

此文为Async in C#5.0学习笔记 1、在async/await之前的异步 方式一:基于事件的异步Event-based Asynchronous Pattern (EAP). private void DumpWebPage(Uri uri) {WebClient webClient new WebClient();webClient.DownloadStringCompleted OnDownloadStringCo…

【大数据进阶第三阶段之ClickHouse学习笔记】ClickHouse的简介和使用

1、ClickHouse简介 ClickHouse是一种列式数据库管理系统(DBMS),专门用于高性能数据分析和数据仓库应用。它是一个开源的数据库系统,最初由俄罗斯搜索引擎公司Yandex开发,用于满足大规模数据分析和报告的需求。 开源地址…

01-shell

shell 1. shell概述 1.1 引入 完成以下任务: 判断用户家目录下(~)下面有没有一个叫 test 的文件夹如果没有,提示按 y 创建并进入此文件夹,按 n 退出如果有,直接进入,提示请输入一个字符串,并…

Qt/C++音视频开发63-设置视频旋转角度/支持0-90-180-270度旋转/自定义旋转角度

一、前言 设置旋转角度,相对来说是一个比较小众的需求,如果视频本身带了旋转角度,则解码播放的时候本身就会旋转到对应的角度显示,比如手机上拍摄的视频一般是旋转了90度的,如果该视频文件放到电脑上打开,…

探索PyTorch优化和剪枝技术相关的api函数

torch.nn子模块Utilities解析 clip_grad_norm_ torch.nn.utils.clip_grad_norm_ 是 PyTorch 深度学习框架中的一个函数,它主要用于控制神经网络训练过程中的梯度爆炸问题。这个函数通过裁剪梯度的范数来防止梯度过大,有助于稳定训练过程。 用途 防止…