本文面向零基础读者,介绍 Git 是什么、如何安装与做个人版本管理,以及如何在 VS Code 里操作、如何连接 GitHub/Gitee,并对团队协作用法有初步概念。 文中命令与行为说明均以 Git 官方手册、GitHub 文档、Gitee 帮助、Visual Studio Code 文档 为核对依据;托管平台界面与认证政策会变,请以各平台当前页面为准。
阅读本文前
下文示例多在终端(命令行)中输入命令。你需要会:打开终端、用 cd 进入某个文件夹、知道当前路径里有哪些文件(ls 在 Linux/macOS,dir 在 Windows CMD 等)。
- Windows:可在开始菜单搜索「终端」「PowerShell」或「Git Bash」(安装 Git for Windows 后);也可在资源管理器某文件夹地址栏输入
cmd回车。 - macOS:「聚焦」搜索「终端」Terminal;或系统自带说明见 Apple 支持文档。
- Linux:常见发行版用
Ctrl+Alt+T或应用程序里的「终端」。
若完全未接触过命令行,可先阅读 Mozilla 的入门材料: 命令行速成课(MDN)(外链内容以 MDN 为准)。
建议阅读顺序
术语速查
- SSH
- 一种远程登录与加密传输方式。Git 可用
git@github.com:用户名/仓库.git这类 SSH URL;需在本机生成密钥并把公钥加到托管网站。详见各平台「SSH 密钥」帮助页。 - HTTPS
- 基于 HTTP 的加密访问。Git 远程 URL 形如
https://github.com/用户名/仓库.git;推送时常见用法是个人访问令牌(PAT)等,具体以平台文档为准。 - PAT(Personal Access Token)
- 个人访问令牌,常用于 HTTPS 推送时代替密码(是否必须、如何创建,以 GitHub / Gitee 当前说明为准)。
origin- 默认的远程仓库别名,不是魔法名字;可用
git remote -v查看实际 URL。见 git-remote。 HEAD- 通常指向当前检出分支上的最新提交;具体定义见 gitglossary。
- 远程跟踪分支(remote-tracking branch)
- 如
origin/main,表示「你本地记录的、远程main上次见到时的位置」。与本地分支main可能不同步,需fetch/pull更新。见 Pro Git:远程分支。
Git 是什么、解决什么问题
Git 是分布式版本控制系统:每个克隆下来的仓库里都有完整历史,可在本地提交、分支、合并,再与远程交换。 与「复制整个项目文件夹做备份」相比,Git 记录的是提交(commit)组成的历史,便于对比差异、回到某次状态、多人并行修改后合并。 概念与术语请以 Git 文档总览 与 Pro Git(中文版) 为准。
核心概念
工作区、暂存区、版本库
日常可记住三层(详见 Pro Git:记录仓库的历史):
- 工作区(Working tree):你直接编辑文件的地方。
- 暂存区(Staging area / Index):下一次提交要包含哪些修改的清单;用 git add 把改动放入暂存区。
- 版本库(Repository):存在项目目录下的
.git中,保存提交对象与分支等元数据。
分支与 HEAD
分支是指向某一提交的可移动指针;在分支上新增提交时,该分支指针会前进。 git branch、git switch 的说明见官方手册。
安装与首次配置
获取 Git
- Windows:从 git-scm.com/download/win 下载安装「Git for Windows」(含 Git Bash)。安装后在终端执行
git --version,应显示版本号。见 git。 - macOS:可从上述官网下载安装包,或用 Apple 开发者工具/Xcode Command Line Tools 等途径;以 官方下载页 与当前系统说明为准。
- Linux:通过发行版包管理器安装,例如 Debian/Ubuntu 常见为
sudo apt install git;命令与包名以你所用发行版文档为准。
首次配置(全局)
提交会记录作者信息,请至少设置姓名与邮箱(与托管平台展示可一致):
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
更多选项见 git-config,例如 init.defaultBranch 指定 git init 的默认初始分支名;core.autocrlf 与换行符有关,Windows 与 Linux/macOS 协作时常需阅读说明再设,避免「一刀切」结论。
HTTPS 推送时密码/令牌如何保存,与「凭据助手(credential helper)」有关,见 gitcredentials 与平台文档。
命令行:个人日常
下列命令的权威说明均在 Git 手册 对应页面;此处只列常见用途。
创建仓库与克隆
- git init:在当前目录新建仓库。
- git clone <url>:克隆远程仓库到本地,默认会把远程登记为
origin(可用git remote -v查看)。
日常循环:状态、暂存、提交
- git status:查看工作区与暂存区状态。
- git add:将改动加入暂存区;
git add -p可交互挑选片段(补丁模式)。 - git commit -m "说明":把暂存区内容做成一次提交。
- git log:
--oneline紧凑显示;--graph便于看分支历史。
查看差异
- git diff:默认常表示工作区相对暂存区;
git diff --staged(或--cached)表示暂存区相对上一次提交。
分支、切换、合并
- git branch:列出或创建分支。
- git switch:切换分支(Git 2.23 起提供;更早版本常用 git checkout 切换分支,旧教程仍常见)。
- git merge:合并分支;可能是快进(fast-forward)或产生合并提交,视历史而定,见手册。
撤销与恢复
- git restore:恢复工作区或取消暂存(2.23+;旧教程可能用
git checkout或git reset达成类似效果,以手册为准)。 - git reset:
--soft/--mixed/--hard行为不同;--hard会丢弃工作区与暂存区中未提交的修改,使用前务必理解手册。
在已与他人共享的分支上改写历史(如强推)可能影响他人克隆与拉取。git push --force 等操作请仅在理解后果时使用;见 git-push 与团队规范。
暂存与忽略
- git stash:临时保存未提交改动,便于切换分支或拉取;选项见手册。
- .gitignore:忽略无需纳入版本控制的文件(如构建产物、本地配置);模式规则见文档。
标签
git tag 常用于标记发布点;轻量标签与附注标签区别见手册。
fetch 与 pull
git fetch:从远程取回更新,并更新你本地的远程跟踪分支(如 origin/main),不会自动合并进你当前工作分支。
git pull:在默认配置下相当于 git fetch 再与当前分支合并;也可配置为 rebase 等,以手册与本地配置为准,不要记成「pull 永远等于某一种固定命令」。
fetch 与 pull 关系示意(默认行为与可配置项以官方手册为准)。合并冲突
当 Git 无法自动合并时,会在文件中留下冲突标记,例如 <<<<<<<、=======、>>>>>>>。需人工编辑后再次 add、commit。见 git-merge 与 Pro Git:合并冲突。
在 VS Code 中使用 Git
VS Code 内置源代码管理视图,无需安装扩展也可完成暂存、提交、查看差异等。功能与界面可能随版本变化,请以 Source Control in VS Code 官方文档为准。
与命令行的粗略对应:
- 暂存(Stage)≈
git add - 提交(Commit)≈
git commit - 同步/拉取/推送等按钮 ≈
git pull/git push(具体以界面标签与官方说明为准)
扩展如 GitLens 可增强行内 blame、历史浏览等,属可选,以扩展市场说明为准。
GitHub、Gitee 与远程仓库
远程与常用命令
- git remote:查看、添加、修改远程别名与 URL。
- git push:将本地提交推送到远程;首次可
git push -u origin <分支名>设置上游。 - git pull / git fetch:见上文。
默认分支名可能是 main 或 master,以你在网页上看到的仓库为准。
HTTPS 与个人访问令牌
使用 HTTPS URL 时,推送身份验证方式以各平台当前安全要求为准,例如个人访问令牌(PAT)。请勿在文章或截图中泄露令牌。详见 GitHub Docs、 Gitee 帮助。
SSH 公钥
使用 SSH URL 前,通常在本机用 OpenSSH 的 ssh-keygen 生成密钥对,把公钥复制到 GitHub/Gitee 账户设置中;步骤与选项以各平台说明为准,例如
GitHub:生成 SSH 密钥、
Gitee 帮助站内「SSH 公钥」相关条目。
主机指纹提示与首次连接注意事项见各平台文档;具体按钮位置以各平台帮助为准:
GitHub:SSH、
Gitee 帮助中心(站内搜索「SSH 公钥」)。
检测连接常用(主机名以平台文档为准):如 ssh -T git@github.com;Gitee 主机名见 Gitee 文档。
在网页上建库后推送
在 GitHub/Gitee 网页创建空仓库后,按页面提示在本地已有仓库执行 git remote add origin <url>,再 git push -u origin main(分支名以页面为准)。
若远程 URL 变更,可用 git remote set-url origin <新 URL>。
Fork、Pull Request / Merge Request
Fork 是在托管平台上复制他人仓库到你名下;你给 Fork 增加远程时常命名为 upstream 指向原项目,便于同步。见
GitHub:Fork、
Gitee 帮助中「Fork / Pull Request」相关条目。
Pull Request(PR)或 Gitee 的 Pull Request / Merge Request 是请求把某分支的改动合并进目标仓库的流程,常与代码审查一起使用;细节以平台文档为准。
安全与礼仪
- 不要把密码、私钥、API 密钥提交进仓库;用
.gitignore与平台密钥管理实践。 - 对多人使用的分支谨慎使用强制推送;需要时先沟通。
- 大二进制或超大文件可考虑 Git LFS 等方案(独立于 Git 核心,以项目文档为准)。
- 保护分支、审查规则等由托管平台提供,见 GitHub:Protected branches、 Gitee 帮助中「保护分支」相关说明。
团队里 Git 在干什么
团队常用功能分支把各人工作与主线隔离,通过 Pull Request / Merge Request 做代码审查后再合并,减少直接推坏主线的风险。 多人同时修改同一文件的相邻区域时,更容易出现合并冲突,需要在本地或网页上解决后再合并。
把提交历史整理成直线时,有人用 merge,有人用 rebase;以项目约定为准,不要把它当成唯一标准。见
git-rebase、git-merge。
小结:两条个人最小路径
路径 A:只在本机做版本记录
- 在项目目录
git init - 编辑文件 →
git add→git commit,反复循环 - 需要时用
git branch/git switch做分支,用git merge合并
路径 B:本机 + 远程(GitHub/Gitee 等)备份与同步
- 在网站创建仓库,按提示
git remote add与git push - 另一台电脑:用
git clone拉下仓库;之后在该机上git pull取更新、git push上传你的提交
同一人在两台电脑上维护自己的仓库,本质也是 clone / pull / push,注意不要在未拉取最新提交前强行覆盖远程(除非你明确在做什么)。
参考与延伸阅读
插图说明:本站文内图 1~4 为自绘 SVG,仅作示意;精确行为以 Git 与各平台官方文档为准。