【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将远端仓库和本地仓库进行一次同步。然后提交。

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

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

  • 点赞 ⭐️
  • 收藏 📌
  • 关注 🔔
相关推荐
12345,catch a tiger11 小时前
虚拟机ubuntu安装Vmware Tools
linux·运维·ubuntu
天若有情67311 小时前
【C++原创开源】formort.h:一行头文件,实现比JS模板字符串更爽的链式拼接+响应式变量
开发语言·javascript·c++·git·github·开源项目·模版字符串
凉、介12 小时前
别再把 PCIe 的 inbound/outbound、iATU 和 eDMA 混为一谈
linux·笔记·学习·嵌入式·pcie
辰风沐阳12 小时前
OpenClaw 安装教程(Ubuntu 24.04 Desktop)
linux·ubuntu
嘿嘿嘿x312 小时前
Linux记录过程
linux·开发语言
海盗123412 小时前
在群晖NAS上使用Git Server
git
y小花12 小时前
git常用指令
git
华科大胡子12 小时前
开源项目 Git 贡献全流程拆解
git
极地星光12 小时前
工程中:Git 子模块(submodule) vs 直接依赖(源码/库/包管理器)
git
程序猿编码13 小时前
一个授予普通进程ROOT权限的Linux内核级后门:原理与实现深度解析
linux·运维·服务器·内核·root权限