11.Git版本控制:从入门到精通

一.什么是版本控制器?

版本控制器为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你 了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和 版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。 ⽬前最主流的版本控制器就是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
  • 此流程依次完成暂存、提交和推送操作。

不能直接跳过 addcommit 直接 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命令显示已跟踪文件的变更状态(如modifiedstaged)。

不跟踪文件(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

相关推荐
Ai拆代码的曹操38 分钟前
K8s Pod Pending 逐层排查:从 FailedScheduling 到 PVC StorageClass 不存在的实战记录
java·linux·kubernetes
wangbing11252 小时前
JPA下自定义主键
java·linux·服务器
bush42 小时前
正点原子imx6ull-uboot,奇怪的问题
linux·学习
Urbano2 小时前
卫衣生产工艺科普与智能自动化设备应用解析
大数据·运维·人工智能
dddwjzx2 小时前
嵌入式Linux C应用编程——Framebuffer应用编程
linux·嵌入式
TlSfoward3 小时前
TLSFOWARD TLS指纹
开发语言·数据库·爬虫·搜索引擎·https·php
Geeys3 小时前
拼多多投产比(ROI)越高好还是越低好?深度拆解合理阈值与高效提效工具
大数据
QC777LX3 小时前
运营岗位怎么借AI提升内容、活动和复盘效率?
大数据·人工智能
今天也想躺ping4 小时前
linux系统移植pjsua库实现sip通话功能
linux·sip·交叉编译
智塑未来4 小时前
AI Agent 搜索工具选型参考:聚焦 AI Agent 搜索的垂直专用基础设施
大数据·人工智能