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

相关推荐
idolao1 小时前
CentOS 7 安装 jprofiler_linux64_7_2_3.tar.gz 详细步骤(解压、配置、远程连接)
linux·python·centos
深邃-2 小时前
【Web安全】-Kali,Linux配置(1):Kali网络配置,LinuxEnvConfig配置脚本,APT源的讲解,Kali设置中文
linux·运维·开发语言·网络·安全·web安全·网络安全
Hello World . .2 小时前
Linux驱动编程:内核同步的艺术-从互斥到底半部
linux·开发语言·数据库
林熙蕾LXL2 小时前
Ubuntu——APT软件包
linux·运维·ubuntu
s6516654962 小时前
Makefile语法学习
java·linux·前端
时空自由民.2 小时前
嵌入式-CI(Continuous Integration)介绍
linux·单片机·ci/cd
有谁看见我的剑了?2 小时前
ubuntu 搭建本地镜像仓库
linux·运维·ubuntu
vortex52 小时前
详解ACF:Alpine Linux轻量Web配置框架
linux·运维
minji...2 小时前
Linux 网络套接字编程(五)TCP 回声服务器的实现(单进程(单线程)/多进程/多线程/线程池四个版本)
linux·服务器·开发语言·网络·c++·tcp/ip·算法