Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!
我的博客: <但凡.
我的专栏: 《编程之路》、《数据结构与算法之美》、《C++修炼之路》、《Linux修炼:终端之内 洞悉真理》
感谢你打开这篇博客!希望这篇博客能为你带来帮助,也欢迎一起交流探讨,共同成长。
这一期我们来讲一下Git的概念以及基础使用。
目录
1、引入
Git 是一个分布式版本控制系统 ,用于跟踪文件变化并协调多人协作开发。
那么什么是版本控制呢?我们用一个例子来引入。
假设有两个人,小王和小李,他们要分别给自己的客户实现一个ppt展示页面。好巧不巧,这两个客户都很会"刁难"人,小王和小李改了每次给客户看ppt,客户都会说:"不满意,再改改吧"。改了n次之后,这两个客户说:"算了,还是给我第一版吧。",这时候,小王高高兴兴的把第一版交给客户了,但是小李却更头疼了,因为在过去的每次更改ppt,他都没有备份原来的版本。他还得仔细回忆,他的第一版是什么样子。
在上面的例子中,每次的更新ppt的过程就叫版本控制。版本控制的本质是用来应对变化。 当然了,**git的版本控制并不是简单的备份原来的版本,而是记录每次变化。**比如小王在某次更改时,新增一个修改记录"20XX年X月X日,新增了XXXXX"。如果我们想恢复上一个版本,我们就把这个记录逆向的更新回去。
2、Git
2.1、Git的历史
Git由Linux之父Linus Torvalds于2005年开发,最初是为了管理Linux内核的开发而设计。在2005年之前,Linux内核开发团队长期使用专有的分布式版本控制系统BitKeeper,但由于版权和许可问题,BitKeeper的免费使用被终止,促使Linus决定开发一个开源、高效且分布式的新版本控制系统。
2.2、Git的工作流程简述
本地操作
- 修改文件后,使用
git add
将变更暂存到暂存区(Staging Area)。 - 通过
git commit
将暂存区的变更提交到本地仓库,生成唯一的提交哈希。 - 分支管理通过
git branch
创建或切换分支,git merge
或git rebase
合并分支。
当然,分支我们之后再说,现在假设我们只有一个master分支,那么在本地操作的工作流程是这样的:

其中,工作区就是在电脑上要写文件的目录,暂存区英文叫stage或者index,放在.git目录下的index文件。版本库又叫仓库(一般叫仓库),工作区的.git目录就是Git的版本库。这个版本库里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以"还原"。
远程协作
git push
将本地提交推送到远程仓库(如 GitHub/Gitee)。git pull
拉取远程变更并自动合并,相当于git fetch
+git merge
。- 冲突解决需手动编辑冲突文件后重新提交。
**在多人开发的时候,我们可以通过限制提交的方式,保证服务端尽量都是最新的。**如果不是最新的,允许client提交,其他client就必须同步的方式就行多人协同开发。也就是把远端的内容pull过来。
其他核心操作
git status
查看当前状态,git log
查看提交历史。git reset
回退到特定版本,git stash
临时保存未提交的变更。
典型协作流程示例:
- 开发者在本地分支完成功能开发并提交。
- 推送分支到远程仓库,发起 Pull Request 请求合并。
- 团队审核后合并到主分支(如
main
),其他成员同步更新本地仓库。
每次我们提交代码时,都是把代码先放到暂存区,这个暂存区就是给你后悔用的。如果后悔了可以把这部分文件再删了。
Git 的分布式特性允许离线工作,所有操作先在本地完成,最后与远程仓库同步。Git是去中心化的版本控制策略。
3、Git仓库的搭建
理论说完了,我们先把Git的仓库搭建起来。
我们打开gitee,注册账号,接着新建一个仓库。

**按照以上设置新建一个仓库,接着,我们要把我们的仓库克隆到我们的Linux系统上。**当然了,git可以在windows系统上使用,并且windows系统上有一些非常方便的可视化软件,让我们管理git仓库非常方便,比如soucetree,tortoise。同样,windows系统可以支持命令行的方式管理git仓库。我们这个系列文章是针对Linux系统的,如果大家想了解windows系统如何配置git可以去搜索了解一下。
我们点击仓库的克隆下载,复制这串链接:

接着我们得在linux系统上下载git:
bash
sudo yum/apt -y install git
然后回到家目录,在Linux系统上执行这串命令:
git clone 刚才复制的链接
现在,我们就把刚才创建的仓库里面的东西,原封不动的复制到了我们的系统中。那么现在我们的本地仓库和远端仓库就同步起来了。
我们可以使用ls -al查看所有的文件:

其中,这个.git就是我们的本地仓库。 REDAME就是一个自带的解释文档,为我们可以往里面写对于这个仓库的描述。我们的远端和本地的结构其实是一样的。如果我们想提交一份文件,把文件放到gitfortest这个目录,然后执行git add就可以把文件添加到暂存区。
我们也可以看看.git里面有什么:

在实际操作之前,我们还得把git仓库绑定到我们的邮箱,我们执行一下命令:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
其中--global表示应用到全局,也就是应用到系统上的所有仓库。
我们来新建一个文件,演示一下实际的流程是什么样的:
第一步,把我们的文件放到gitfortest目录;
第二步,执行以下命令把文件新增到暂存区:
bash
git add .
我们也可以使用git add 文件名来添加。
其中,.表示新增当前目录下的所有变化。
第三步,执行以下命令把文件提交到本地仓库:
bash
git commit -m "添加测试代码"
其中双引号里面的是提交日志,我们需要描述每次新增了什么文件或者改变了什么代码。
第四步,执行以下命令把本地仓库推送到远端:
bash
git push
这里应该还会让你输一次gitee的密码,我们按照指示输入就好。
至此,我们就把这个文件提交到了远端仓库。

我们修改codetest.c里面的内容,仍然按照add,commit,push这个流程,来提交更改。
现在我们介绍一下.gitignore文件。我们可以通过.gitignore来过滤提交的文件,防止一些没用的文件污染仓库。在.gitignore中出现的后缀,在提交的时候以该后缀为结尾的文件都会被忽略。

我们可以手动修改这里面的后缀。
接下来我们介绍一些常用的命令:
git log 查看提交记录
git log --pretty=oneline 查看提交日志,输出更简洁
git config user.name 查看用户名
git config user.email 查看邮箱git config --list 查看Git配置信息
git status 查看工作目录和暂存区的状态
git diff --cached 查看暂存区和最后一次提交的差异
git diff 查看工作区中尚未暂存的修改内容
好了,今天的内容就分享到这,我们下期再见!