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# 方法二:通过 HomebrewbrewinstallgitWindows:
访问 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.md3.4 提交
# 提交暂存区的内容gitcommit-m"添加用户登录功能"# -m:提交信息(简短描述本次改动)# 打开编辑器编写多行提交信息(适合复杂的提交)gitcommit# 第一行:简短标题(不超过50字符)# 空一行# 后面:详细描述# 跳过暂存,直接提交所有已追踪文件的改动gitcommit-am"修复登录 bug"# -a:自动暂存所有已追踪文件的改动(不包括新文件)# 相当于 git add + git commit