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

Git 完整教程

Git 完整教程(从零开始)


一、Git 是什么?

Git 是目前世界上最流行的分布式版本控制系统,由 Linux 内核创始人 Linus Torvalds 于 2005 年创建。

用途:

  • 追踪代码变化:记录每一次修改,随时可以回到任意历史版本
  • 团队协作:多人同时修改同一项目,合并各自的改动
  • 分支开发:同时维护多个功能分支,互不干扰
  • 代码备份:将代码推送到远程仓库(如 GitHub),防止本地数据丢失

"分布式"是什么意思?

  • 每个开发者的本地机器上都有完整的仓库副本(包含完整历史记录)
  • 不依赖中央服务器也可以工作(提交、查看历史、分支操作等)
  • 与集中式版本控制(如 SVN)相比,更快、更灵活、更可靠

Git 在哪里运行?

  • 本地命令行(Terminal / Git Bash)
  • 各种 IDE 内置的 Git 界面(VS Code、JetBrains 等)
  • GitHub、GitLab、Gitee 等代码托管平台(存放远程仓库)
  • CI/CD 流水线中(自动触发构建、测试、部署)

核心概念:

概念说明
仓库(Repository)存放项目所有文件和历史记录的地方,分本地仓库和远程仓库
提交(Commit)一次代码变更的快照,包含作者、时间、变更内容和说明信息
分支(Branch)独立的开发线,默认分支名为main(或旧版的master
暂存区(Staging Area)提交前的缓冲区,决定哪些改动被包含在下次提交中
工作区(Working Directory)你正在编辑的本地文件目录
远程仓库(Remote)托管在服务器上的仓库,通常名为origin

二、安装与初始配置

安装 Git

macOS:

# 方法一:安装 Xcode Command Line Tools(推荐)xcode-select--install# 方法二:通过 Homebrewbrewinstallgit

Windows:
访问 https://git-scm.com/download/win 下载安装程序,安装时推荐选择 Git Bash。

Linux(Ubuntu/Debian):

sudoapt-getupdatesudoapt-getinstallgit

验证安装:

git--version# 输出示例:git version 2.43.0

首次必须配置(非常重要!)

# 设置用户名(会显示在每次提交记录上)gitconfig--globaluser.name"张三"# 设置邮箱(必须与 GitHub/GitLab 账号邮箱一致)gitconfig--globaluser.email"zhangsan@example.com"# 设置默认编辑器(用于编写提交信息)gitconfig--globalcore.editor"code --wait"# VS Codegitconfig--globalcore.editor"vim"# Vimgitconfig--globalcore.editor"nano"# Nano(新手友好)# 设置默认分支名为 main(推荐与 GitHub 保持一致)gitconfig--globalinit.defaultBranch main# 查看所有配置gitconfig--list# --global 表示对当前用户的所有仓库生效# --local 表示只对当前仓库生效(在仓库目录内执行)

三、基础常用命令

3.1 创建仓库

# 方法一:在本地新建仓库mkdirmy-projectcdmy-projectgitinit# 输出:Initialized empty Git repository in /path/to/my-project/.git/# Git 会创建一个 .git 隐藏目录,所有版本信息都存在这里# 方法二:从远程克隆已有仓库gitclone https://github.com/username/repo-name.git# 克隆到当前目录下的 repo-name 文件夹gitclone https://github.com/username/repo-name.git my-local-name# 克隆并指定本地目录名gitclone--depth1https://github.com/username/repo-name.git# 浅克隆:只克隆最新的提交记录,不含完整历史,速度更快(适合大型项目)

3.2 查看状态

gitstatus# 查看工作区和暂存区的状态# 显示:哪些文件被修改、哪些已暂存、哪些未被 Git 追踪# 输出示例:# On branch main# Changes to be committed: ← 已暂存,将包含在下次提交中# modified: README.md# Changes not staged for commit: ← 已修改但未暂存# modified: main.py# Untracked files: ← Git 不知道这个文件的存在# new_file.pygitstatus-s# 简短输出,更紧凑# M README.md → 已暂存的修改(M 在左边)# M main.py → 未暂存的修改(M 在右边)# ?? new_file.py → 未追踪的文件

3.3 暂存文件

# 暂存单个文件gitaddREADME.md# 暂存多个文件gitaddREADME.md main.py app.py# 暂存某个目录下的所有变更gitaddsrc/# 暂存当前目录下的所有变更(包括新文件、修改、删除)gitadd.# 交互式暂存(逐行选择哪些改动要暂存)gitadd-pREADME.md# 非常有用!可以把一个文件的不同改动分拆成多个提交# 取消暂存(把文件从暂存区移回工作区,不影响文件内容)gitrestore--stagedREADME.md# 旧版命令(也可用):git reset HEAD README.md

3.4 提交

# 提交暂存区的内容gitcommit-m"添加用户登录功能"# -m:提交信息(简短描述本次改动)# 打开编辑器编写多行提交信息(适合复杂的提交)gitcommit# 第一行:简短标题(不超过50字符)# 空一行# 后面:详细描述# 跳过暂存,直接提交所有已追踪文件的改动gitcommit-am"修复登录 bug"# -a:自动暂存所有已追踪文件的改动(不包括新文件)# 相当于 git add + git commit
http://www.jsqmd.com/news/712502/

相关文章:

  • 程序员不断学习,具体应该怎么做
  • 振动信号驱动万能式断路器智能故障检测系统【附代码】
  • 2026手机网校搭建平台推荐!助力教培机构数字化教育
  • ARM微控制器引脚配置与交叉开关架构实战指南
  • 2026上半年多商户小程序权威服务商盘点:哪家更适配你的电商需求
  • 前端测试:Cypress 集成测试最佳实践
  • 多进程不只是绕过 GIL:从 Python 性能优化到进程级隔离的工程实战
  • NVIDIA Cosmos Policy:机器人控制策略的模块化与仿真训练实践
  • 守护服务器安全|OpenSSH CVE-2024-6387 漏洞深度剖析 + 实操修复指南
  • 位运算基础与进阶
  • 五国朋友齐聚这里周五静安英语角
  • 国产替代崛起,白酒崩!
  • 临时停车系统厂家深度测评:全场景适配运维实力综合解析
  • egergergeeert企业落地实践:用低显存模式支撑日常插画草图迭代需求
  • 笔记软件换了一个又一个还是不满意?Trilium用下来解决了我的知识管理焦虑
  • DeepSeek V4 突然发布,DeepSeek-V4 技术报告深度解读
  • WeDLM-7B-Base镜像免配置:预置webui.py+supervisor.conf开箱即用
  • Rust生命周期:杜绝悬垂指针的终极指南
  • C#怎么设置JWT身份认证_C#如何生成并验证Token令牌【实战】
  • 前端微前端:Webpack 5 Module Federation 深度解析
  • 人力资源管理——解读全面掌握OKR:目标设定与持续绩效管理的实践指南【附全文阅读】——文末附下载链接
  • HTTP (XSS前简单了解)
  • 油价高企或令日元持续疲软,干预效果可能有限
  • 【Docker AI Toolkit 2026终极实战指南】:5大生产级AI工作流一键容器化,附GPT-4o+Llama-3本地部署完整脚本
  • LM文生图llm标准制定:输出图像EXIF元数据规范与溯源机制
  • 运维实战:监控与维护生产环境的DeOldify模型服务
  • CSS 定义的实例化演示
  • Dev Containers 调试器连接超时?不是网络问题!源码级定位 debug adapter 协议握手失败的 2 个 TLS 握手阻塞点与 1 个 WebSocket 缓冲区溢出漏洞
  • 人工智能之提示词工程 第一章 提示工程基础认知
  • 大语言模型推理一致性与准确性研究:方法与发现