一.什么是版本控制器?
版本控制器为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你 了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和 版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。 ⽬前最主流的版本控制器就是Git。
Git可以控制电脑上所有格式的⽂件,例如doc、excel、dwg、 dgn、rvt等等。对于我们开发⼈员来说,Git最重要的就是可以帮助我们管理软件开发项⽬中的源代码 ⽂件!
1.在linux下clone远端仓库
git clone +你的仓库地址


.git才称为隐藏的本地仓库,在gitee网站上看不到,tree .git包含了历史上所有的修改记录
二.git操作
git在提交的时候,只会提交变化的部分,在.git的objects显示
在merge_class_delete下touch text.c并没有被当地仓库管理
.git叫本地仓库,merge_class_delete叫当前工作区

git add .
表示将当前工作目录下的所有新增、修改或删除的文件暂存到 Git 的暂存区(Staging Area)。
git reset <file-name>
将文件从暂存区移出,但保留工作目录的更改

git add不会直接把文件放到仓库,而是更改暂存到暂存区,这样做可以方便多次修改后能直接一次就把多个文件提交到仓库

git commit -m "commit message"
(建议写上-m)写清楚这次对文件的操作是干嘛的(日志信息)
用于将暂存区的更改保存到本地仓库。每次提交都会生成一个唯一的哈希标识,记录更改的详细信息。
git log
能看到对项目提交的历史命令,显示当前分支的提交记录,包括提交哈希、作者、日期和提交信息等。

git push
将本地仓库的提交上传到远程仓库
add:工作目录 → 暂存区。commit:暂存区 → 本地仓库。push:本地仓库 → 远程仓库- git add .
git commit -m "描述更改"
git push origin main- 此流程依次完成暂存、提交和推送操作。
不能直接跳过 add 和 commit 直接 push 是不可行的,因为 Git 需要提交记录作为推送的基础。强制绕过流程会导致版本混乱或数据丢失,建议遵循标准的 Git 工作流程。
git命令行安装
git --verson1查看git的版本
sudo install git(centos)下载
2.git版本管理,只管理源文件.c .cpp .h
三.其他知识
1.跟踪文件和不跟踪文件
跟踪文件通常通过git add命令添加到暂存区(Staging Area)。这些文件的状态变化会被Git记录,包括修改、删除或重命名操作。
- 新文件跟踪 :使用
git add <filename>将新文件加入暂存区,后续提交会包含该文件。 - 修改跟踪 :已跟踪的文件被修改后,需再次
git add以将变更暂存。 - 查看状态 :
git status命令显示已跟踪文件的变更状态(如modified或staged)。
不跟踪文件(Untracked Files)指未被Git管理的文件,通常包括新创建但未git add的文件 ,或通过.gitignore明确忽略的文件。
3. gitignore
保存需要忽略特定后缀的文件列表(忽略的文件不会被跟踪、提交到仓库或显示在未跟踪文件列表中)
被忽略的文件在linux下只相当于一个普通文件,没有被git管理起来,创建删除这些文件后git status 没有如何提示
windows改后提-->linux改后提-->err-->git pull->git push>sucess-->widows改后提-->err
如果在windos上修改代码后提交到仓库后再到linux下也修改代码再push提交就会报错

git pull
从远程仓库获取最新更改并合并到当前分支的命令。
拉取当前分支对应的远程分支:git pull

cat text.c就能看到在windows下向text.c里写的代码
现在再push就可以了

总结:远端仓库,相比较任何人,都是最新的
为什么要有冲突?
提醒本地用户你要和远端仓库进行同步了,确保自己相对远端是最新的
四.gdb和cgdb:
gdb

linux下我们编译好的代码不能直接调试因为gcc/g++默认是release

在翻译时要加上-g(最后链接不用加)让最后形成可调式的debug模式
release:


debug:


首先在大小上debug模式大于release,并且readelf -S processbar | grep -i debug在debug下能看到有debug的调试信息。
所以程序要调试必须是debug模式,也就是说编译时得加上-g

gdb和cgdb使用操作
开始: gdb binFile(eg:gdb mycode不是gdb mycode.c)
退出: ctrl + d 或quit


eg: l 2再回车看接下来的代码
info b看断点:

删除断点,不能d+行号
只能根据Num断点编号的d 1 ,d 2
gdb不退出,断点编号依次递增,eg:删了3个断点后不退出,下一个断点编号为4


到19行再n去20行再n去21行,再r输入y又回到19行断点处
step/s:cgdb会记录最新的一条输入指令,所以可以直接按enter不用一直s