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

Git 极简使用指南

Git 是一个强大的分布式版本控制系统,但入门只需要掌握几个核心概念和命令。本指南旨在帮助你快速上手,处理日常开发中最常见的 80% 的场景。
在这里插入图片描述

核心概念

  1. 仓库 (Repository / Repo): 你的项目文件夹,包含了项目的所有文件和完整的历史记录。
  2. 工作区 (Workspace): 你当前正在修改文件的目录。
  3. 暂存区 (Staging Area / Index): 一个暂存文件快照的地方,准备提交到仓库。
  4. 本地仓库 (Local Repository): 存储在你自己电脑上的项目版本历史。
  5. 远程仓库 (Remote Repository): 托管在网络服务器(如 GitHub, GitLab)上的项目版本历史,用于团队协作和备份。
  6. 分支 (Branch): 为了隔离开发而创建的独立线路,避免在主线上造成混乱。mastermain 是默认的主分支。
  7. 提交 (Commit): 将暂存区的文件快照永久保存在本地仓库的一次记录。每次提交都应该是一个完整的、独立的功能或修复
  8. HEAD: 一个指针,指向你当前所在的本地分支的最新一次提交。

工作流程图

Local Machine
git add
git commit
git push
git checkout
git pull
Staging Area
Workspace
Local Repo
Remote Repo
Remote Server

常用命令

掌握以下几个命令,就能应对绝大部分日常工作。

1. 初始化与克隆

  • git init

    • 在当前目录创建一个新的 Git 仓库。
    • git init my-project
  • git clone [url]

    • 从远程仓库复制一份完整的项目到本地。这是你参与一个现有项目的起点。
    • git clone https://github.com/someone/example-repo.git

2. 本地操作核心三步曲

这是你最常执行的操作循环:修改 -> 暂存 -> 提交。

  • git status

    • 查看当前工作区和暂存区的状态,强烈建议在执行任何操作前都先运行此命令,了解当前状况。
  • git add [file]

    • 将工作区的修改添加到暂存区。
    • git add . : 添加所有已修改和新创建的文件。
    • git add specific-file.js : 添加指定文件。
  • git commit -m "Your descriptive message"

    • 将暂存区的所有内容提交到本地仓库,并附上一条说明性的消息。
    • 提交信息 (-m) 一定要写清楚! 例如: "feat: Add user login functionality""fix: Correct calculation error in payment module"

3. 分支管理

分支是 Git 的核心优势,它让并行开发变得简单而安全。

  • git branch

    • 列出所有本地分支。*号标记的是你当前所在的分支。
  • git branch [branch-name]

    • 创建一个新分支。
  • git checkout [branch-name]git switch [branch-name] (推荐)

    • 切换到指定分支。你的工作区文件会立刻变为该分支的状态。
  • git checkout -b [branch-name]git switch -c [branch-name] (推荐)

    • 一个快捷命令,创建并立即切换到新的分支。这是开始一个新功能或修复一个 bug 的标准起手式。
    • git switch -c feature/new-button
  • git merge [branch-name]

    • 将指定分支的更改合并到当前分支。例如,你在 main 分支,想把 feature 分支的代码合进来,就执行 git merge feature

4. 远程协作

  • git remote -v

    • 查看已配置的远程仓库地址。
  • git push [remote-name] [branch-name]

    • 将本地分支的提交推送到远程仓库
    • git push origin main : 将本地的 main 分支推送到名为 origin 的远程仓库。origingit clone 时默认创建的远程仓库别名。
  • git pull [remote-name] [branch-name]

    • 从远程仓库拉取最新更改并合并到当前本地分支。这相当于 git fetch + git merge
    • 在开始新工作或准备推送前,养成先 git pull 的好习惯,以避免冲突。

5. 查看历史

  • git log
    • 查看提交历史。按 q 退出。
    • git log --oneline --graph --decorate : 一个更美观、更简洁的日志视图。

极简实战流程

假设你要为一个项目添加一个新功能:

  1. 确保你的 main 分支是最新状态:

    git switch main
    git pull origin main
    
  2. 为新功能创建一个专门的分支:

    # **创建并切换到名为 feature/user-profile 的新分支**
    git switch -c feature/user-profile
    
  3. 开始编码和修改文件…

  4. 分步提交你的修改:

    # 查看修改了哪些文件
    git status# 添加你想要提交的文件
    git add .# **提交你的阶段性成果,写清楚提交信息**
    git commit -m "feat: Add user avatar and basic info display"
    
  5. 将你的功能分支推送到远程仓库,以便备份和团队评审:

    # **首次推送该分支时,需要设置上游(upstream)分支**
    git push -u origin feature/user-profile# **之后再推送该分支,直接使用**
    git push
    
  6. 功能完成后,将其合并回主分支:

    • 在 GitHub/GitLab 等平台上,你可以发起一个 “Pull Request” (或 “Merge Request”)。这是最佳实践。
    • 如果是在本地合并:
      # 切换回主分支
      git switch main# 拉取最新的主分支代码,以防别人更新了
      git pull origin main# **将你的功能分支合并进来**
      git merge feature/user-profile# **将合并后的主分支推送到远程**
      git push origin main
      
  7. (可选)删除已经合并的分支:

    # 删除本地分支
    git branch -d feature/user-profile# 删除远程分支
    git push origin --delete feature/user-profile
    

掌握以上内容,你就可以自信地使用 Git 进行版本控制了。祝你编码愉快!

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

相关文章:

  • 力扣刷题Day 69:搜索二维矩阵(74)
  • c#压缩与解压缩-SharpCompress
  • Neo4j 安全深度解析:原理、技术与最佳实践
  • MySQL指令个人笔记
  • 2022年 国内税务年鉴PDF电子版Excel
  • 基于Java的OPCDA采集中间件
  • 基于PyQt5的相机手动标定工具:原理、实现与应用
  • vue2 项目中 npm run dev 运行98% after emitting CopyPlugin 卡死
  • JavaScript 性能优化实战:从原理到框架的全栈优化指南
  • 2025年- H61-Lc169--74.搜索二维矩阵(二分查找)--Java版
  • 微服务商城-用户微服务
  • 数学复习笔记 26
  • 创建型-设计模式
  • 移动AI神器GPT Mobile:多模型自由切换
  • 【黄金评论】美元走强压制金价:基于NLP政策因子与ARIMA-GARCH的联动效应解析
  • ubutu修改网关
  • Flink进阶之路:解锁大数据处理新境界
  • 【论文阅读】Dolphin: Document Image Parsing via Heterogeneous Anchor Prompting
  • 谷歌地图免费下载手机版
  • DeepSeek 赋能金融衍生品:定价与风险管理的智能革命
  • SpringBoot-15-多表查询之多对多查询可选中间表
  • 论文中pdf图片文件太大怎么办
  • 简单爬虫框架实现
  • MVCC理解
  • 705SJBH超市库存管理系统文献综述
  • shell:基础
  • 【JVM】万字总结GC垃圾回收
  • 内网横向之RDP缓存利用
  • 【Linux网络】传输层TCP协议
  • 不同视角理解三维旋转