什么是git
git是一个版本控制工具
如何去做版本管理?
假设学校布置了一个实践报告课题,让学生去写
小A写完了一篇。去给老师交,老师指出了很多不足,把第一次的报告打回去了
报告改好后,又去给老师交,第二次又被打回了
第三次一样,也是被老师给打回去了,结果老师又找小A要他第二次的实践报告,小A已经懵了,他根本就没有留以前写的报告
小明知道了小A这件事,在他被老师大会的时候他就留了个备份
等到第三次的时候老师又找小明要第二次写的报告,小明留有备份,所以就给老师交差了
小明所做的工作就叫做版本管理
以后在公司上班,程序员就扮演了学生这一角色,产品经理就是老师,程序员就要将每次的项目都备份一下,以防产品经理需要历史版本
git命令行基本操作
确定自己Linux上有没有安装git,输入giit --version
如果有下面这行代码,就说明Linux里装了git

如果没有就直接用指令安装就行了
bash
sudo yum install -y git
没有仓库可以在git个人主页新建仓库

创建仓库设置照搬这个就行,新建仓库现在只能是私有的,后面可以改

语言和.gitgnore可以根据自己的情况调整
还有这个

现在想要开源就要在代码的管理里

找到开源设置,把这些都勾了,然后git后台就会审核仓库,完成后就能开源了
但是一般空仓库午饭直接开源,提交一点代码就能开源了
怎么把远端拉取到本地
复制这个链接

git clone 就能把远端仓库的所有内容克隆到本地
这里的.git目录其实就叫做仓库

怎么添加代码到仓库里呢?
现在进入要添加到仓库的目录中,使用git add .
这里的 . 就是选中当前目录里所有没有被添加到仓库的文件

然后就是提交
使用 git commit -m "代码说明" 提交代码,这个叫做把对应的修改内容提交到本地仓库
从add 到 commit 指令的过程中,就已经相当于小明把自己的实践报告保存到本地的这一动作
接着就是push将本地仓库的内容传到远端仓库
然后输入一下用户名和密码

成功后远端仓库也能看见提交的代码了
使用git log 能看到所有的提交日志
要是想删除文件,直接输入这个指令,就会在git上直接删除

我们想看一下本地和远端同步的状态,使用git status就可以看
现在就能看出这个main.c被delete了

这时要将本地的删除提交到远端,这时就再进行git的三板斧就行了

gdb的使用
Linux跟vs一样写完代码也需要调试,这里用的就是gdb
首先先在vim里写一段代码

一般代码有两个版本,分别是debug版本和release版本
debug版本是程序员自己进行测试的版本,测试没问题后就把release版本交给测试人员让他们再进行测试
但是gcc/g++默认生成的是release版本的,不是debug版本的,所以还要改一下Makefile

-g 就是生成debug版本的可执行程序
-std=c99 就是用c99的标准编译
那么debug和release在调试信息层面上有什么差别呢
可以使用readelf指令来读取可执行程序的二进制构成
这个就是mytest -debug文件二进制构成的指令

他就能把我们可执行程序的对应的各种分段全部显示出来
使用grep指令搜索一下debug,debug文件里确实有很多的debug调试信息

现在可以使用gdb指令来进行调试了
l 1
l 1指令就是从第一行开始显示代码,继续输l就能把历史的代码全部展示出来,gdb能自动记录我们最近一次写的输入的指令,所以直接回车也能显示代码

r
输入r指令,表示润代码就会运行起来,直接就会显示结果最后正常退出

b
调试肯定是要打断点的,打断点的指令就是b
写个b 19就会在代码的第19行打一个断点,后面还有文件信息等

info
info b 的意思是打开我们打过的断点

当我们再输入r时就会在断点处停止

再输 info b
就跟上次不一样了,多了这么一行,意思就是当前我们的断点已经命中一次了

d
删除断点使用的时指令 d
b 的时候是行号,d 的时候更行号怎么样,似乎并不行

其实d后面跟的时断点的编号
当我们把编号为1的断点删除后,再去info就找不到了

再次运行时就会直接运行到程序结束
disable breakpoint
vs的断点不还有实心和空心的状态嘛,当断点时空心的时候就是失去作用了,linux里面也可以输入 disable breakpoint 2后能发现2号断点Enb选项是 n
这就表示这个断点现在是关闭状态

enable breakpoint
打开指令则是enable breakpoint

s
逐语句调试
如果前面输入过s,后面继续回车就会自动逐语句

n
一个过程由多条语句组成
前面输过n后再按回车就是逐过程调试

p
有时候调试不仅仅是一步步走,还会监视相应变量的变化,于是就有了p
要监视sum,就p sum,相应的 i 和 &sum 也一样

但是这个指令不能常显示,必须手动输入后才能查看变化后的数值
display
要常显示就要使用display指令,这下每一次调试时都会常显示

取消常显示则是用 undisplay,但不能直接输入具体名字,要输入对应条目的编号才能取消常显示

until
假如我们调试时就像把循环跑完,不打断点,就使用到了until指令

注意:要是有断点在until指定行数的前面的话先取消掉断点才能正常until

finish
假如目的只是进入到某个函数但是只运行完该函数就停下来,就可以使用finish指令

c
这个指令的作用就是调试时从一个断点处直接运行到下一个断点处