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

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

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

  • 点赞 ⭐️
  • 收藏 📌
  • 关注 🔔
相关推荐
Wins_calculator18 小时前
Fixed VLC snap on Ubuntu
linux·ubuntu·vlc·snap
偶尔贪玩的骑士19 小时前
Kioptrix Level 1渗透测试
linux·开发语言·网络安全·php
我命由我1234519 小时前
Spring Cloud - Spring Cloud 微服务概述 (微服务的产生与特点、微服务的优缺点、微服务设计原则、微服务架构的核心组件)
java·运维·spring·spring cloud·微服务·架构·java-ee
楠木s19 小时前
ctfshow pwn44
linux·服务器·网络·安全·网络攻击模型·二进制
ajassi200019 小时前
开源 Linux 服务器与中间件(七)数据库--MySQL
linux·服务器·数据库·ubuntu·开源
---学无止境---19 小时前
Linux中页表缓存初始化pgtable_cache_init函数的实现
linux
风为你而吹19 小时前
【玩泰山派】8、泰山派安装armbian,玩armbian
linux
qiuiuiu41319 小时前
正点原子RK3568学习日志12-注册字符设备
linux·开发语言·单片机·学习·ubuntu
Kent_J_Truman19 小时前
Git个人配置偏好记录以及注意事项
git
ZHE|张恒19 小时前
使用 Docker 容器测试端口开放性
运维·docker·容器