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

文章目录


前言

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

chatGPT

一、git基础指令

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

首先检查ubuntu虚拟机上的git版本是不是最新的:

bash 复制代码
sudo apt-get install git

很好,已经是最新的了:

启动命令:

bash 复制代码
git init

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

我们使用ls- a 就能看到.git的隐藏文件:

bash 复制代码
ls -a

然后我们添加用户名和邮箱:

bash 复制代码
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仓库的暂存区:

bash 复制代码
git add main.c

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

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

bash 复制代码
git status

git status 命令用于显示工作目录和暂存区的状态。

截图的意思是:你当前处于一个新的Git仓库,且在master分支上有一些文件已经添加到了暂存区 ,其中包括一个新文件 main.c。如果你希望取消暂存某个文件,可以使用 git rm --cached 命令。

接下来,你可以执行 git commit 命令来提交这些更改。执行 git commit 后,Git将会要求你输入本次提交的相关信息,例如提交消息等。

接下来我们提交一下:

bash 复制代码
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",这意味着你的工作目录是干净的,没有未提交的更改。

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

bash 复制代码
git log

git log 命令用于显示版本提交历史记录。当你运行这个命令时,会显示每次提交的详细信息,包括提交者、提交日期、提交的哈希值以及提交消息。

这里的输出表示:你的 git log 输出显示了一个提交,哈希值为 dd73feaa05ff6f7e5b3b52b4e878c2101aab1272,作者为 elf_li,提交日期为 Mon Jan 8 12:04:00 2024 +0800,并且提交消息是 "instial program"

二、git分支管理

2.1、一些基础命令

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

bash 复制代码
git branch


目前在主分支

查看一下状态:

现在我们修改一下文件:(新建一个main1.c 删除main.c)(现在是工作区出现了更改

bash 复制代码
git rm main.c
git add main1.c

删除名为 main.c 的文件,然后将名为 main1.c 的文件添加到暂存区。

然后我们提交:

bash 复制代码
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

一般我重新运行一下命令就可以成功,第一遍打命令都要报错 我也不知道为啥

然后这个命令是看一下:

bash 复制代码
git show

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

bash 复制代码
git show --stat

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

bash 复制代码
git log 

命令用于显示提交历史记录。

这里有两个提交,每个提交包括了提交的哈希值、作者、日期和提交消息。第一个提交删除了 main.c 文件并添加了 main1.c 文件,而第二个提交是初始化程序。

bash 复制代码
git show dd73feaa05ff6f7e5b3b52b4e878c2101aab1272

git show [commitid]查看某次提交的具体修改内容

还可以加上 --stat:

bash 复制代码
git show dd73feaa05ff6f7e5b3b52b4e878c2101aab1272 --stat

2.2、时间回溯

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

bash 复制代码
git reset --hard dd73feaa05ff6f7e5b3b52b4e878c2101aab1272

git reset --hard dd73feaa05ff6f7e5b3b52b4e878c2101aab1272 命令将工作区和暂存区都回退到指定的提交 dd73feaa05ff6f7e5b3b52b4e878c2101aab1272,并且丢弃之后的所有提交。

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

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

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

bash 复制代码
git checkout -b test

以下是实验结果:

给分支改名:

bash 复制代码
git branch -m test project_test


删除分支:

bash 复制代码
git branch -d test
相关推荐
量子-Alex1 小时前
【多模态聚类】用于无标记视频自监督学习的多模态聚类网络
学习·音视频·聚类
吉大一菜鸡1 小时前
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
笔记·学习·fpga开发
DN金猿1 小时前
git命令恢复/还原某个文件、删除远程仓库中的文件
git
CCSBRIDGE3 小时前
Magento2项目部署笔记
笔记
爱吃西瓜的小菜鸡4 小时前
【C语言】判断回文
c语言·学习·算法
小A1594 小时前
STM32完全学习——SPI接口的FLASH(DMA模式)
stm32·嵌入式硬件·学习
亦枫Leonlew4 小时前
微积分复习笔记 Calculus Volume 2 - 5.1 Sequences
笔记·数学·微积分
岁岁岁平安4 小时前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入
DWei_GaGa4 小时前
Git:查看分支、创建分支、合并分支
git
武昌库里写JAVA4 小时前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计