当前位置: 首页 > ai >正文

在Linux下git的使用

目录

1.git

细节1:什么叫做仓库??

细节2:git本身出了版本控制,也提供网络功能

细节3:本地仓库和远端仓库没有本质上的区别

细节4,:git是去中心化的版本控制策略

2.git的历史

1. Git 的诞生背景

2. Git 的主要发展阶段

(1) 2005 年:Git 诞生

(2) 2005-2010:生态成熟

(3) 2010 至今:持续优化

3. Git 的核心设计理念

4. Git 与竞争对手的对比

5. Git 的现代应用

6. 总结

3.git的注意事项

问题:为什么要同步远端?如何多人协作?

git add git commit -m"XXX"究竟是在干什么?

当前工作区和本地git仓库区别

git的注意事项


1.git

git是一个版本控制器,所以它的核心功能就是版本控制

我们来一张图片理解一下,我们当前目录下写的代码需要同步到本地仓库git下,然后上传到远端的仓库实现托管。

git的规则有:

本地仓库和远端仓库内容不一致,推送无法推送,比如张三和王五它们两个人共同在一个git下工作,张三的代码上传了,这个时候王五也想上传代码就不行,因为它的本地git仓库和远端仓库不一致,它的本地仓库现在没有王五新上传的工作,需要先同步一下远端仓库王五上传的,再进行上传。所以我们本地仓库的内容一定是包含远端仓库的所有内容才可以上传。

so,规则是本地仓库和远端仓库不一致,推送无法推送,多人开发通过限制提交,保证服务端尽量最新,如果不是最新,允许client提交,其它client提交就必须同步的方式来搞。

提交之前先和远端保持一致,增量式的提交,所以我们的本地仓库一定是包含远端仓库的所有内容,然后对远端仓库进行扩展。

细节1:什么叫做仓库??

答案仓库就是特定的目录

细节2:git本身出了版本控制,也提供网络功能

细节3:本地仓库和远端仓库没有本质上的区别

细节4,:git是去中心化的版本控制策略

这句话的理解是我们的个人仓库不依赖与远端仓库,远端仓库哪天如果崩掉了,不影响我本地的仓库,我本地仓库下的东西还是能跑,不是说远端仓库挂掉了,我的本地仓库就废掉了。所以叫它是去中心化的版本控制策略。

2.git的历史

Git 的历史可以追溯到 2005 年,由 Linus Torvalds(Linux 内核的创始人)开发,目的是解决 Linux 内核开发中的版本控制问题。以下是 Git 发展的关键里程碑:


1. Git 的诞生背景

  • 2002 年之前:Linux 内核开发使用 BitKeeper(一个商业分布式版本控制系统)。

  • 2005 年:BitKeeper 的免费授权被撤销,Linux 社区急需替代方案。

  • Linus Torvalds 决定自己写一个版本控制工具,目标是:

    • 分布式(每个开发者拥有完整仓库)。

    • 高性能(快速提交、分支切换)。

    • 强数据完整性(SHA-1 校验)。


2. Git 的主要发展阶段

(1) 2005 年:Git 诞生

  • 4 月 3 日:Linus 开始开发 Git。

  • 4 月 7 日:第一个 Git 提交(版本 0.01)。

  • 6 月 16 日:Linux 内核项目正式迁移到 Git。

(2) 2005-2010:生态成熟

  • 2006 年:GitHub 的前身(repo.or.cz)提供 Git 托管服务。

  • 2008 年GitHub 上线,推动 Git 的普及。

  • 2010 年:Git 成为 最流行的版本控制工具(超越 SVN、Mercurial)。

(3) 2010 至今:持续优化

  • 2016 年:Git 引入 SHA-256 实验性支持(应对 SHA-1 碰撞攻击)。

  • 2020 年:GitHub 被 微软收购,但 Git 本身仍开源。

  • 2022 年:Git 2.35+ 优化 稀疏检出(sparse-checkout) 和 部分克隆(partial clone)


3. Git 的核心设计理念

  1. 分布式版本控制

    • 每个开发者拥有完整的仓库,不依赖中央服务器(与 SVN 不同)。

  2. 快照存储(而非差异存储)

    • 每次提交保存文件的完整快照(提高性能)。

  3. 基于哈希(SHA-1)的数据模型

    • 所有对象(提交、文件、目录)通过哈希唯一标识。

  4. 分支和合并的高效性

    • 分支只是轻量级指针,合并速度快。


4. Git 与竞争对手的对比

工具类型诞生时间特点现状
Git分布式2005高性能、分支友好主流
SVN集中式2000简单但依赖服务器逐渐淘汰
Mercurial分布式2005类似 Git,但更简单小众
Perforce集中式1995企业级,适合大文件特定领域

5. Git 的现代应用

  • 代码托管平台:GitHub、GitLab、Bitbucket。

  • CI/CD 流水线:与 Jenkins、GitHub Actions 集成。

  • 文档管理:Markdown + Git 实现版本化文档。

  • 基础设施即代码(IaC):Terraform、Ansible 结合 Git。


6. 总结

  • Git 由 Linus Torvalds 在 2005 年开发,最初用于 Linux 内核管理。

  • 其 分布式架构 和 高效分支模型 彻底改变了版本控制方式。

  • 今天,Git 已成为 软件开发的事实标准,并推动 GitHub/GitLab 等生态繁荣。

Git 的成功证明了一个真理:“好的工具可以改变世界” 🚀。

3.git的注意事项

我们的git现在用gitee来进行为例子。

我们如果需要进行代码托管,需要先创建一个仓库

找到仓库的地址,在Linux下进行git clone 地址把远端仓库克隆过来

然后进行git add.         git commit -m "xXXX"    git push

其中前两步是进行本地化提交,git add.是把test.c搞到暂存区,git commit是提交到本地仓库。

所以前两步都是在本地仓库进行操作,第三步git push是进行本地和远端仓库进行同步。

git commit -m "XXX"其实XXX代表了日志,不能随便写。

git push同步远端和本地仓库。

问题:为什么要同步远端?如何多人协作?

首先先说一下,我们的目录下有一个.gitigonre,这个意思是忽略的意思,git主要是进行源文件头文件文档的托管,我们必须忽视一些非必要的文件,比如,i,等一些临时文件,防止这些临时文件污染我们的代码。

git status->查看我们是否有东西要提交

commit把本地文件添加到本地仓库,这个时候我们git status就不会显示这个文件了,因为我们当前的工作区就已经是干净的了。

git add git commit -m"XXX"究竟是在干什么?

当前工作区和本地git仓库区别

这个问题其实已经有涉及,但是我们反复说就是加深印象,方便理解。

1.我们新建、删除、修改文件本身。

2.杜宇一个具体的文件,增删改对一个文件的内容进行编辑

git add. git commit就是提交的是你的历史修改操作。

相当于我们的记事本,记录了我们对文件的修改操作。它把这个记录同步到本地仓库。

.git里是本地仓库,它里面有一个暂存区我们git add.就是把我们的操作记录搞到暂存区,git commit就是把这个搞到本地仓库

修改记录:本质是当前工作区内文件的变化

git log 查看提交记录-》查看的修改的记录

我们可以看见我们的提交记录。

git的注意事项

我们首次git push需要我们提供用户名密码,这个用户名是我们登录gitee时候的用户名,密码就是登录时候的密码。

git commit时让我们输入email和name这个email和name需要和我们的gitee保持一致。

以上操作可以看到我已经在Linux上完成了gitee的提交了!!!

git还是一个比较重要的工具,这里的功能只是初步,想要详细了解还需要进行专业学习。下期再见!!!

http://www.xdnf.cn/news/15360.html

相关文章:

  • 量子计算新突破!阿里“太章3.0”实现512量子比特模拟(2025中国量子算力巅峰)
  • MYOJ_8512:CSP初赛题单1:计算机常识
  • 计算机网络通信的相关知识总结
  • Linux进程优先级机制深度解析:从Nice值到实时调度
  • 图机器学习(1)——图论基础
  • Django Admin 配置详解
  • 【C语言进阶】指针面试题详解(2)
  • 玩转Docker | 使用Docker部署TeamMapper思维导图应用程序
  • 使⽤Pytorch构建⼀个神经⽹络
  • Android Studio C++/JNI/Kotlin 示例 三
  • IDEA实现纯java项目并打包jar(不使用Maven,Spring)
  • Bash vs PowerShell | 从 CMD 到跨平台工具:Bash 与 PowerShell 的全方位对比
  • 单片机(STM32-串口通信)
  • 名片管理系统IV
  • 位置编码类型彩色图解
  • android Perfetto cpu分析教程及案例
  • (5)LangGraph4j框架ReActAgent实现
  • 核电概念盘中异动,中核科技涨停引领板块热度
  • SQL性能调优经验总结
  • HashMap的长度为什么要是2的n次幂以及HashMap的继承关系(元码解析)
  • 持续优化小程序排名,稳定获取搜索流量
  • Bash常见条件语句和循环语句
  • gRPC和http长轮询
  • Python:打造你的HTTP应用帝国
  • 019_工具集成与外部API调用
  • 缺乏实际里程碑管控项目进度,如何设定关键节点
  • 李沐动手学深度学习Pytorch-v2笔记【08线性回归+基础优化算法】2
  • PHP password_hash() 函数
  • Excel常用快捷键与功能整理
  • 当 `conda list` 里出现两个 pip:一步步拆解并卸载冲突包