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
  • 此流程依次完成暂存、提交和推送操作。

不能直接跳过 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

相关推荐
全栈陈序员2 小时前
【Git】从入门到精通(五)—— git add:将文件加入暂存区
大数据·git·elasticsearch
翊众建站4 小时前
用 JSON-LD 给企业官网做结构化数据:LocalBusiness 与 FAQPage 实践笔记
人工智能·搜索引擎·json
KKKlucifer4 小时前
国内数据安全服务的产品智能化转型:大模型赋能下的技术能力重构分析
大数据·数据库·重构
故七月5 小时前
AI 答案里的竞品共现:怎么看出赛道格局
大数据·人工智能
全栈陈序员5 小时前
【Git】从入门到精通(七)—— git status:查看仓库状态
大数据·git·elasticsearch
lzx_0026 小时前
Linux 进程(二) 深入理解进程
linux
沫璃染墨6 小时前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
温暖小土6 小时前
在 CentOS 上安装 Redis Stack
linux·redis·centos
fengye2071616 小时前
第三章 编译cpython
大数据·elasticsearch·搜索引擎
大大大大晴天6 小时前
每天认识一个组件:Apache Flink
大数据