1.git的基本介绍
版本控制:每一个版本存一个档,回老版本叫回退。
仓库就是每个用户独有的一个文件夹。
本地仓库就是磁盘,远端仓库就是云服务器。
而git就是用与帮用户管理仓库的,其即可以管理本地仓库,也可以管理与远端仓库(gitee或github),因此其即是客户端也是服务区。
2.多人合作的本质
将一个云服务器的项目数据都同步到所有用用户的计算机上,每个用户只管理分配给他的那部分,不同部分的云端修改和同步数据不会存在矛盾,因此可以实现。
3.git的操作
1.同步云服务器
git clone https://gitee.com/feng_wu_yin_li/galgame_love.git
//同步操作,可以直接在当前所在路径下打开云仓库
2.进入该云服务器目录中(所以要将外面的文件拷贝一份到云服务器的目录内)
3.add
git add .
//上传当前目录中云服务器全部不存在或没完全同步的新文件
git status 查看git暂存区上传的文件
[fengyouyinli@VM-0-2-centos galgame_love]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: iji
git log 查看所有日志
git log
3.commit 提交日志信息
git commit -m "写什么都可以"
[fengyouyinli@VM-0-2-centos galgame_love]$ git commit -m "dkad"
[master 6a5ad60] dkad
1 file changed, 6 insertions(+)
create mode 100644 iji
3.push 将本地文件上传到远端
git push
git中最好只管理.c/.cpp/.h等源文件
.gitignore内部可以设置add中忽略的后缀文件.
[fengyouyinli@VM-0-2-centos galgame_love]$ cat .gitignore
# Build and Release Folders
bin-debug/
bin-release/
[Oo]bj/
[Bb]in/
# Other files and folders
.settings/
# Executables
*.swf
*.exe
*.o
*.obj
*.i
//...
从云端传数据到windows只需要在空文件夹中点git中的clone输入云端的路径即可。windows传gitee就是常规操作。
4.上传矛盾问题
当两个用户往同一个目录下传代码时,一个用户传了之后,另一个用户再想传就要更新云同步才能传了(git会跟据用户本地仓库时间与云仓库时间比较来分析是否允许其上传,以保证其他人的数据不被丢失)
5.gdb的使用
gdb是linux的调试器。linux默认生成的文件是release的,加-g修饰后的才是debug的。
gcc test -o test.c -g
gdb不好用,因此我们用cgdb.
gdb test.c
//以debug模式打开该文件
输入quit退出.
1.b
b + n
//给第n行打断点
2.info b
info b
//确认所有断点信息
//实操复制
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x0000000000400535 in main at rt.c:3
在cgdb不退出时,num处的值一直递增,即使前面有断点被删了。
3.d
d + n
//删除num为n的断点
4.n/s
n:逐过程到下一行代码(类似于f10)
s:逐语句到下一行代码(类似于f11)
cgdb会自动记录最新一条的指令,用enter可以一直执行。
5.r
r:回到第一个断点处
运行完会询问是否会到第一个断点处
6.bt查看栈调用
7.finish直接运行完当前所在函数(函数得返回值使存在寄存器中的)
8.p+变量 查看该变量的值
9.enable + n 使编号为n的断点能使用
10.disable + n 禁用编号为n的断点
11.c去到下一个断点处
12.until + n 执行到第n行就停止
13.display + 变量 一直展现该变量的数据(没使用一次指令就展现一次)
1: y h
(gdb) display o
2: o = 32767
(gdb) info display
Auto-display expressions now in effect:
Num Enb Expression
2: y o
1: y h
//有对应的编号
- undisplay + n 停止编号为n的变量展现
15.p后面也就可以加变量的表达式
16.info locals 可以查看当前函数内局部变量的所有值
17.watch + 变量名 该变量的值改变时会通知(使用d删除)
18.set var 变量=n 临时改变该变量的值
- b + 行数 + 变量名 if(表达式) 条件编译,当条件成立时就在此处停止编译
20.condition 断点编号 表达式 给非条件断点设置条件(多用于让一个断点走了一次后就不再触发了)
21.esc进入代码屏,i回到cgdb指令屏(上面是代码屏,下面是指令屏)
