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

Git基础玩法简单描述

Git 的三个核心区域

工作区
开发者直接编辑文件的目录,所有未跟踪或修改的文件均处于此区域。文件改动后需通过 git add 转入暂存区。

暂存区
临时存储修改的中间区域,使用 git add 将工作区的变动添加至此。允许分批提交,避免直接提交未完成的更改。

版本库
通过 git commit 将暂存区内容永久保存为版本快照。每个提交生成唯一哈希值,支持回退和历史追踪。


Git 基础操作指令

环境配置

  • 版本检查:git --version
  • 设置用户名:git config --global user.name "YourName"
  • 设置邮箱:git config --global user.email "email@example.com"

仓库管理

  • 初始化:git init
  • 添加文件到暂存区:
    • 单文件:git add filename
    • 全部文件:git add .
  • 提交到版本库:git commit -m "Message"
  • 状态检查:git status -s
    • A:新文件首次暂存
    • ??:未跟踪文件
    • 红色 M:已修改未暂存
    • 绿色 M:已修改且暂存

撤销与恢复

  • 暂存区覆盖工作区:git restore file
  • 移除暂存区文件:git rm --cached file
  • 查看提交历史:git log --oneline
  • 版本回退:git reset --hard commit_hash

分支管理

基础操作

  • 查看分支:git branch*标记当前分支)
  • 创建分支:git branch new_branch
  • 切换分支:git checkout branch_name
  • 合并分支:先切换到目标分支,执行 git merge source_branch
  • 删除分支:git branch -d branch_name

远程仓库协作(以 Gitee 为例)

SSH 密钥配置
生成密钥:ssh-keygen -t ed25519 -C "Gitee SSH Key"

仓库连接与推送

  • 首次关联远程仓库:git remote add origin https://gitee.com/user/repo.git
  • 推送代码:git push -u origin master
  • 冲突处理:
    • 拉取远程更新:git pull origin master
    • 强制合并:git pull --rebase origin master

克隆与多人协作

  • 克隆仓库:git clone repo_url
  • 验证远程连接:git fetch origin
  • 查看远程仓库:git remote -v

高级场景

忽略文件
创建 .gitignore 文件,列出需忽略的文件/目录模式,如:

*.log
node_modules/

云端与本地冲突解决
当远程仓库更新领先于本地时:

  1. 拉取最新代码:git pull origin master
  2. 解决冲突后重新提交并推送

强制推送警告
避免直接使用 git push --force,可能导致团队代码丢失

Git 基础知识与操作指南

Git 是一个分布式版本控制系统,用于高效管理代码变更。核心概念包括三个区域:工作区、暂存区和版本库。下面我将基于您提供的信息,结构化解释这些概念和常用指令,确保内容清晰可靠。

一、Git 的三个区域
  • 工作区(Working Directory):您实际开发时操作的文件夹,包含所有文件修改。例如,您在本地编辑代码文件。
  • 暂存区(Staging Area):保存准备提交的文件变更。添加文件到暂存区后,Git 会跟踪这些改动,但尚未永久保存。
  • 版本库(Repository):提交暂存区内容后生成的永久快照。每个提交对应一个唯一版本号,便于历史回溯。
二、常用 Git 指令

以下指令基于标准 Git 语法,我已整理为分类列表。使用命令行时,确保在 Git 仓库目录下执行。

  1. 配置与初始化

    • 检查 Git 版本:
      git -v
      

    • 配置全局用户名称和邮箱(仅需设置一次):
      git config --global user.name "您的名称"
      git config --global user.email "您的邮箱"
      

    • 初始化新仓库:
      git init
      

  2. 文件管理

    • 添加文件到暂存区:
      • 添加指定文件:
        git add 文件名
        

      • 添加所有修改的文件:
        git add .
        

    • 提交文件到版本库:
      git commit -m "注释内容"
      

    • 查看文件状态(-s 参数简化输出):
      git status -s
      

      • 状态符号含义:
        • A:新文件,已添加到暂存区。
        • ??:未添加到暂存区。
        • 红色 M:文件已修改,但未提交到暂存区。
        • 绿色 M:文件已修改,且已提交到暂存区。
    • 恢复工作区文件(用暂存区覆盖工作区):
      git restore 目标文件
      

    • 移除暂存区文件(保留工作区文件):
      git rm --cached 目标文件
      

  3. 历史与回退

    • 查看提交历史(简化输出):
      git log --oneline
      

    • 回退到指定版本:
      git reset --hard 版本号
      

      • 注意:回退后,当前版本之后的提交历史会隐藏,但可通过版本号再次回退。
    • 忽略文件:创建 .gitignore 文件,列出需忽略的文件或目录(如临时文件)。
  4. 分支管理

    • 查看所有分支(* 表示当前分支):
      git branch
      

    • 创建新分支:
      git branch 分支名
      

    • 切换到分支:
      git checkout 分支名
      

    • 合并分支(先切换到主分支):
      git merge 子分支名
      

    • 删除已合并的子分支:
      git branch -d 子分支名
      

三、远程仓库连接(以 Gitee 为例)

远程仓库如 Gitee 允许代码托管和协作。操作前需生成 SSH 密钥并配置。

  1. 生成 SSH 公钥

    • 在命令行执行:
      ssh-keygen -t ed25519 -C "Gitee SSH Key"
      

    • 完成后,公钥文件(通常为 id_ed25519.pub)需添加到 Gitee 账户设置中。
  2. 连接远程仓库

    • 首次连接:
      git remote add origin 远程仓库地址
      

    • 推送代码到云端(如主分支):
      git push -u origin "master"
      

    • 查看当前远程仓库配置:
      git remote -v
      

    • 验证连接:
      git fetch 仓库名称
      

      • 作用:检查连接状态,并获取远程最新数据到本地。
  3. 云端与本地同步

    • 当云端文件数大于本地时,需先拉取再推送:
      • 拉取代码(不合并):
        git pull 远程仓库别名 分支名
        

      • 拉取并合并(推荐):
        git pull --rebase 远程仓库别名 "分支名"
        

    • 克隆云端仓库到本地:
      git clone 远程仓库地址
      

四、多人协作流程

多人开发时,遵循以下步骤避免冲突:

  1. 克隆仓库
    git clone 他人远程仓库地址
    

  2. 修改与提交
    • 本地修改代码后,务必提交到版本库:
      git add .
      git commit -m "修改描述"
      

  3. 推送更新
    • 连接远程仓库(如未配置):
      git remote add origin 远程仓库地址
      

    • 推送代码:
      git push -u origin "master"
      

    • 如果云端代码不同,那就得先拉取再推送(使用 git pull --rebase)。

Git 的核心在于理解三个区域的流转:工作区 → 暂存区 → 版本库。

http://www.lryc.cn/news/610423.html

相关文章:

  • 【LeetCode刷题集】--排序(一)
  • ICCV2025 Tracking相关paper汇总和解读(19篇)
  • ubuntu 20.04 C和C++的标准头文件都放在哪个目录?
  • windows双系统下ubuntu20.04安装教程
  • HTTPS有哪些优点
  • Jeston + TensorRT + Realsense D435i + ROS noetic + Yolo11 各版本模型目标检测
  • Flink CDC 介绍
  • Field and wave electromagnetics 复习
  • 正点原子阿波罗STM32F429IGT6移植zephyr rtos(四)---在独立的应用工程里使用MPU6050
  • 【Java】一篇详解HashMap的扩容机制!!
  • SparkSQL—sequence 函数用法详解
  • 四、Linux 的实用操作
  • wpf Image 转 90 度
  • 华为OD机考2025C卷 - 分配土地 (Java Python JS C++ C )
  • 复合机器人抓取精度怎么测量?
  • Tableau筛选器所有值与总和的差异:同一度量,两重世界
  • 【教学类-52-17】20250803动物数独_空格尽量分散_只有一半关卡数(N宫格通用版3-10宫格)0图、1图、2图、6图、有答案、无答案 组合版24套
  • 内网有人下载导致网速很慢怎么找出来?
  • Vue3核心语法进阶(生命周期)
  • MySQL InnoDB 表数据结构存储方式详解
  • 川翔云电脑:引领开启算力无边界时代
  • 数学 理论
  • 哪些企业需要私有化部署?有没有推荐的私有化im
  • 段落注入(Passage Injection):让RAG系统在噪声中保持清醒的推理能力
  • [Shell编程] 零基础入门 Shell 编程:从概念到第一个脚本
  • 【RH124知识点问答题】第8章 监控和管理 Linux 进程
  • Linux 磁盘管理详解:分区、格式化与挂载全流程指南
  • 内联函数:提升效率的空间换时间艺术
  • C++面试题及详细答案100道( 01-10 )
  • mongodb源代码分析创建db流程分析