> 技术文档 > 【Linux】基础开发工具(3)_linux git pull

【Linux】基础开发工具(3)_linux git pull


1. 版本控制器Git

1.1 Git的简史

Git 的历史可以追溯到 2005 年1。当时 Linux 内核项目的开发团队一直使用 BitKeeper 进行版本管理,但由于一位 Linux 开发成员写了一个连接 BitKeeper 仓库的外挂,BitMover 公司决定中止 Linux 免费使用 BitKeeper 的授权1。Linux 团队与 BitMover 磋商无果后,Linux 内核的创始人 Linus Torvalds 决定开发自己的版本管理系统1。

2005 年 4 月 3 日,Linus Torvalds 正式开始开发 Git3。仅仅四天后,他就发布了 Git 的第一个可用版本(0.1),这个初始版本包含了 Git 的核心功能3。在接下来的几周内,Linus 和其他早期贡献者对 Git 进行了快速迭代和改进,逐步完善了其稳定性和功能3。

Git 的设计目标是实现分布式开发,解决现有集中式版本控制工具(如 CVS、Subversion)性能低下、分支管理不灵活以及依赖中央服务器等问题3。它具有所有行为都要校验、操作必须在毫秒级内完成等特性1。

随着开发的深入,Git 逐渐被大众接受1。2008 年 2 月,为 Git 提供托管服务的 GitHub 上线,进一步推动了 Git 的广泛应用1。此后,Git 成为了世界上最流行的分布式版本控制系统之一,被大量的初创企业、集体企业和跨国公司用于维护软件项目的源代码2。

1.2 Git的操作(以下操作是在Centos环境进行的)

1.2.1 安装 git

yum install git

1.2.2 在gitee创建项目

登录gitee创建仓库在创建好的项目页面中复制项目的链接, 以备接下来进行下载

下载项目到本地 

创建好一个放置代码的目录

git clone [url]

这里的url就是刚刚创建好的项目链接 

 1.2.3 git add

git add 命令是一个非常重要的操作,它的主要作用是将工作目录中修改过的文件或新建的文件,添加到暂存区(也称为 “索引”,英文为index,以便后续提交到版本库中。

git add [文件名]

1.2.4 git commit

git commit 命令用于将暂存区(staging area ,也叫索引 index)的内容提交到本地版本库,形成一个新的提交对象。

git commit -m \"xxx\"

提交的时候应该注明提交日记, 描述改动的详细内容. 

1.2.5 git push

 git push 命令用于将本地版本库中分支的提交推送到远程仓库,使得本地的代码变更可以与团队成员共享,或者备份到远程服务器上。

git push

需要填⼊用户名密码. 同步成功后, 刷新 gitee 页⾯就能看到代码改动了. 

git提交的时候,只会提交变化的部分! 

1.2.6 git pull

git pull 是一个常用命令,它主要用于从远程仓库获取最新代码,并自动尝试将获取到的代码合并到本地当前分支 ,在团队协作和多设备开发场景中发挥着重要作用。

git pull [文件名]

1.2.7 其他

git log //查看仓库的提交历史记录。
git status

显示工作目录、暂存区(也称为 “索引”)和本地仓库之间的状态差异。它能直观地告诉你哪些文件被修改、哪些被添加到暂存区、哪些是未被跟踪的新文件,帮助你在提交代码前了解当前工作进度。 

.ignore

 .gitignore 是一个至关重要的配置文件,用于指定 Git 应该忽略哪些文件或目录,避免它们被纳入版本控制。这在实际开发中非常实用,比如可以忽略自动生成的文件、编译产物、日志文件等无需版本管理的内容。

2.  调试器 - gdb/cgdb使用

2.1 样例代码

// mycmd.c#include int Sum(int s, int e){ int result = 0; for(int i = s; i <= e; i++) { result += i; } return result;}int main(){ int start = 1; int end = 100; printf(\"I will begin\\n\"); int n = Sum(start, end); printf(\"running done, result is: [%d-%d]=%d\\n\", start, end, n); return 0;}

2.2 预备

程序的发布⽅式有两种, debug 模式和 release 模式, Linux gcc/g++ 出来的⼆进制程 序,默认是 release 模式。 要使⽤gdb调试,必须在源代码⽣成⼆进制程序的时候, 加上 -g 选项,如果没有添加,程序无法被 编译。

2.3 常见使用

开始: gdb binFile 退出: ctrl + d quit 调试命令list/l:显示源代码b:打断点d:删断点删断点只能根据断点编号来删,gdb不退出,断点编号依次递增。p:打印指定变量的值display:指定变量的值常显示

命令 作⽤ 样例 list/l 显⽰源代码,从上次位置开始,每次列出 10⾏ list/l 10 list/l 函数名 列出指定函数的源代码 list/l main list/l ⽂件名:⾏号 列出指定⽂件的源代码 list/l mycmd.c:1 r/run 从程序开始连续执⾏ run n/next 单步执⾏,不进⼊函数内部 next s/step 单步执⾏,进⼊函数内部 step break/b [⽂件名:]⾏号 在指定⾏号设置断点 break 10 break test.c:10 break/b 函数名 在函数开头设置断点 break main info break/b 查看当前所有断点的信息 info break finish 执⾏到当前函数返回,然后停⽌ finish print/p 表达式 打印表达式的值 print start+end p 变量 打印指定变量的值 p x set var 变量=值 修改变量的值 set var i=10 continue/c         从当前位置开始连续执⾏程序,直到遇到下一个断点或程序结束 continue delete/d breakpoints 删除所有断点 delete breakpoints delete/d breakpoints n 删除序号为n的断点 delete breakpoints 1 disable breakpoints 禁⽤所有断点 disable breakpoints enable breakpoints 启⽤所有断点 enable breakpoints info/i breakpoints 查看当前设置的断点列表 info breakpoints display 变量名 跟踪显⽰指定变量的值(每次停⽌时) display x undisplay 编号 取消对指定编号的变量的跟踪显⽰ undisplay 1 until X⾏号 执⾏到指定⾏号 until 20 backtrace/bt 查看当前执⾏栈的各级函数调⽤及参数 backtrace info/i locals 查看当前栈帧的局部变量值 info locals quit 退出GDB调试器 quit

2.4 常见技巧

安装cgdb: 上⾯的基本调试还是⿇烦,虽然是⿊屏,但是还是想看到代码调试 推荐安装cgdb: Ubuntu: sudo apt-get install -y cgdb Centos: sudo yum install -y cgdb

2-4-1 watch

执行时监视⼀个表达式(如变量)的值。如果监视的表达式在程序运行期间的值发生变化,GDB 会暂停程序的执行,并通知使用者。

2-4-2 set var确定问题原因

更改⼀下标志位,假设我们想得到 +-result

2-4-3 条件断点

添加条件断点

注意: 条件断点添加常⻅两种⽅式:1. 新增 2. 给已有断点追加 注意两者的语法有区别,不要写错了。 新增: b 行号/⽂件名:行号/函数名 if i == 30(条件) 给已有断点追加:condition 2 i==30, 其中2是已有断点编号,没有if