【Linux篇】版本控制器-Git

📌 个人主页: 孙同学_

🔧 文章专栏: Liunx

💡 关注我,分享经验,助你少走弯路!

文章目录

1.如何理解版本控制?

版本控制是追踪和管理文件变更的系统,用于记录代码的历史修改、协调多人协作、快速回滚错误等场景。常见的版本控制系统分为两类:

  • 集中式版本控制(如 SVN):所有操作依赖中央服务器,存在单点故障风险。
  • 分布式版本控制(如 Git):每个开发者拥有完整的仓库副本,独立性更强。

Git 的核心特性:

  1. 分布式架构

    • 每个本地仓库都是完整的代码库,包含全部历史记录。
    • 支持离线操作(提交、分支切换等)。
  2. 高效性能

    • 基于快照存储(非传统差异存储),操作速度快。
    • 优化大型项目和二进制文件处理。
  3. 数据完整性

    • 使用 SHA-1 哈希算法确保每次提交的唯一性,防止数据篡改。
  4. 灵活的分支模型

    • 分支创建、合并成本极低,鼓励频繁分支操作(如功能分支、Bug 修复分支)。

2.Git的操作

  1. 安装Git
    yum install git

  2. 在Gitee创建项目

  3. 在创建好的项目页面中复制项目的链接。

    下载项目到本地

    创建好一个放置代码的目录.
    git clone [url]

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

    把远端仓库拉取到本地文件。

  4. 这个远端仓库在哪里呢?

    我们会发现在在当前目录下多了一个.git目录,严格意义上讲,这个.git才是当前新建的仓库,我们把.git称之为隐藏的本地仓库。
    注意: git提交的时候,只会提交变化的部分!

  5. 当我们把远端仓库拉取到本地时,我们就可以在当前的目录下新增代码,我们首先在当前目录下创建一个test.c

    我们刚刚创建的test.c现在并没有被本地仓库管理起来,当我们把test.c添加到本地仓库里的时候,这时候push才能把本地仓库推送到远端。

  6. 我们一般把.git称之为目录 ,把当前目录名称之为工作区

  7. test.c添加到本地仓库

    严格意义上讲,此时的test.c并没有真正意义上添加到本地仓库,而是放到一个叫暂存区里面。这个暂存区允许我们多次添加,一次提交到仓库。

  8. git status可以看到当前的一个状态

    new file说明次文件是新增的。

  9. git commit真正意义上的提交到本地仓库,我们直接输入git commit是不行的,我们需要带上-m选项,我们称之为日志信息 或者提交日志信息 。注意:-m后面跟的内容不能胡乱写,必须写清楚本次提交都干了什么。

  10. git log可以看到日志,比如我们刚才的推送信息

  11. git push使本地仓库和远端仓库同步

  12. 如果我们不小心删除了本地仓库,我们想获得我们历史上的提交信息,不用担心,我们直接复制链接,进行git clone + 链接,就可以把我们之前的记录重新拉取下来。

    以上就是一次Liunx下的git的基本提交,总结一下就是git三板斧

  • git add
  • git commit
  • git push
    附加:git log:查看日志 git status:查看状态

补充细节问题

  1. git命令行安装
cpp 复制代码
sudo yum install git
sudo apt install -y git

查看是否安装git --version,出现下面带有版本号的表明已经安装。

  1. 首次使用:需要输入username,email
  2. git版本管理,只进行管理源文件
  3. 如果像以下这样的临时文件不想提交到本地仓库并且提交到远端呢?
  4. 我们在构建仓库时存在一个.gitignore,这个文件是帮助我们进行本地文件后缀过滤的,意思是如果临时文件对应的后缀在此文件中有的话,对应的文件都不会被提交。(忽略特定后缀的文件)
  5. 打开.gitignore文件,这都是些临时文件的后缀,当然我们也可以自己向里面添加。
  6. 如果一个人在一台机器上提交了代码,另一个人在另一台机器上提交代码,就会出现下面情况,提交冲突了,我们就需要git pull将远端仓库和本地仓库进行一次同步。然后提交。

    总结:远端仓库相比较于任何人都是最新的!
    为什么冲突呢?答案是提醒本地用户,你需要和远端仓库同步。

👍 如果对你有帮助,欢迎:

  • 点赞 ⭐️
  • 收藏 📌
  • 关注 🔔
相关推荐
磊灬泽1 小时前
【日常错误】鼠标无反应
linux·windows
知白守黑2672 小时前
Ansible角色
运维·服务器·ansible
Jwest20212 小时前
工业显示器在地铁电力监控与运维中的应用
运维·计算机外设
Miracle&6 小时前
2.TCP深度解析:握手、挥手、状态机、流量与拥塞控制
linux·网络·tcp/ip
专注API从业者6 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
Ribou6 小时前
Ubuntu 24.04.2安装k8s 1.33.4 配置cilium
linux·ubuntu·kubernetes
ficker137 小时前
git常用命令
git
tan180°7 小时前
Boost搜索引擎 网络库与前端(4)
linux·网络·c++·搜索引擎
Mr. Cao code8 小时前
Docker:颠覆传统虚拟化的轻量级革命
linux·运维·ubuntu·docker·容器
抓饼先生8 小时前
Linux control group笔记
linux·笔记·bash