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

Git 版本控制工具

一、版本控制工具概述

  1. Git

    • 开源免费,集成服务器与客户端功能
    • 支持分布式版本控制,适合多人协作
    • 对比 SVN:SVN 是集中式版本控制工具,且商业版收费
  2. 基于 Git 的衍生工具

    • 代码托管平台:GitHub、Gitee(提供仓库管理、协作功能)
    • 商业化 OS:基于 Linux 内核的 CentOS、Ubuntu 等

二、Git 安装与初始化配置

​1.安装 Git

yum install git          # CentOS 安装命令
git --version            # 验证安装(已安装显示版本号,未安装提示命令未找到)

2.首次使用配置

git config --global user.email "your_email@example.com"  # 设置全局邮箱(与远程仓库一致)
git config --global user.name "your_username"            # 设置全局用户名

作用:用于代码提交者身份溯源,记录操作日志。

三、Git 仓库操作流程

​1.新建仓库步骤

点击右上角 + → 新建仓库 → 填写仓库名称/描述。

关键配置项

  • 语言选择:C/C++(影响默认 .gitignore 模板)。
  • ​**.gitignore 模板**:选择语言类型(自动过滤临时文件,如 *.o*.exe)。
    • 扩展:若需自定义忽略规则,可在仓库根目录手动编辑 .gitignore(见下文)。
  • 开源许可证
    • 选择 MIT 或 Apache-2.0(宽松协议,允许商用)。
    • 作用:明确代码使用权限,避免法律风险。
  • 初始化 README:勾选后生成 README.md(中英文说明文档)。
  • 分支模型
    • 单分支(仅 master):适合个人/小型项目。
    • 多分支(如 master+dev):需勾选“分支模型初始化”。

仓库创建后结构

    默认生成文件:

  • .gitignore:过滤规则文件。
  • LICENSE:开源协议文本。
  • README.md:项目说明文档(支持 Markdown 格式)。

2.本地与远程仓库同步

克隆远程仓库到本地

git clone https://gitee.com/your_username/repo_name.git
  • 首次克隆需输入账号密码​(HTTPS 协议)。
  • 扩展:若需免密,可配置 SSH 密钥(不推荐初学阶段使用)。

本地仓库目录结构

  • .git/:隐藏文件夹,云服务器上的本地仓库,存储版本控制核心数据如下:
    • HEAD:指向当前分支。
    • objects:存储所有提交对象(代码快照)。
    • logs:记录操作历史(可用于回滚)。
    • 警告:​不要手动修改 .git 内任何文件!​

3.本地代码提交三步骤(三把斧)​

先把想上传到远端仓库的文件或目录拷贝到本地仓库:

第一把斧:添加文件到暂存区

git add .                      # 添加所有新文件/修改过的文件(`.` 表示当前目录)
git add file1.c dir/file2.h    # 添加指定文件/目录

第二把斧:提交到本地仓库

git commit -m "输入提交日志"  # 提交说明需简洁明确

第三把斧:推送到远程仓库

git push    # 推送到远程
  • 可能会提示你输入远端仓库的用户名和登录密码

四、.gitignore 配置

  • 作用:指定忽略上传的文件类型(如临时文件、编译产物)。
  • 自定义规则示例:vim .gitignore  
    *.p      # 忽略所有 .p 文件
    *.pp     # 忽略所有 .pp 文件
    build/   # 忽略 build 目录

五、其他常用命令和操作

​1.查看提交记录与状态

git log               # 查看提交历史(按时间倒序)
git status            # 查看工作区状态(红色未跟踪,绿色已暂存)

2.删除远程仓库

  • 进入 Gitee 仓库 → 管理 → 删除仓库。

3.开源项目设置

  • 仓库管理 → 基本信息 → 选择“开源”选项。

相关文章:

  • JAVA:Spring Boot 集成 Caffeine 实现本地缓存的技术博客
  • 让机器学习更透明:使用 Python 开发可解释性模型工具包
  • Unity Nav Mesh导航系统的简单使用
  • keil5 µVision 升级为V5.40.0.0:增加了对STM32CubeMX作为全局生成器的支持,主要有哪些好处?
  • Chat2DB创始人姬朋飞:AI在 text2sql应用领域的实践
  • leetcode57.插入区间
  • 力扣-hot100(无重复字符的最长子串)
  • QML FileIO 组件
  • Qt项目实现对西门子PLC的读写操作(snap7)——C++
  • 关于大型语言模型的“生物学”
  • 算法题(128):费解的开关
  • 从裸仓库到GitLab全解析
  • 【愚公系列】《Python网络爬虫从入门到精通》056-Scrapy_Redis分布式爬虫(Scrapy-Redis 模块)
  • 不确定与非单调推理的可信度方法
  • REST 架构详解:从概念到应用的全面剖析
  • 多人五子棋联机对战平台 测试报告
  • AI文生图工具推荐
  • 计算机网络期中复习笔记(自用)
  • 8、表单控制:预言水晶球——React 19 复杂表单处理
  • tigase源码学习杂记-AbstractMessageReceiver
  • “站在亚洲实现整体振兴的新起点上”——习近平主席对越南、马来西亚、柬埔寨进行国事访问纪实
  • 85岁眼科专家、武汉大学人民医院原眼科主任喻长泰逝世
  • 市场监管总局:在全国集中开展食用植物油突出问题排查整治
  • 一季度江西GDP达7927.1亿元,同比增长5.7%
  • 昆明盘龙区一火灾调查报告公布:老人火盆取暖引燃房屋致身亡
  • 圆桌|并购重组迎政策红利期,并购基金如何把握发展机遇?