简介
Git 是一个分布式版本控制系统 (Distributed Version Control System, DVCS)
简单来说,它的核心作用是:
追踪文件(比如代码)的修改历史,记录每一次改动的内容、作者、时间;
方便多人协作开发,避免代码冲突;
可以随时回滚到历史版本,不怕改坏代码;
每个人的本地仓库都有完整的版本历史,不依赖中央服务器(比如 GitHub/Gitee)也能工作。
对比你可能听过的 “手动复制文件改名字(如 v1.0、v1.1)” 的方式,Git 能高效、规范地管理版本,是程序员必备的工具。
Git 的核心概念:
先理解几个关键术语,后续操作会更清晰:
仓库 (Repository):
存放项目文件和版本记录的文件夹,分为「本地仓库」(你电脑上的)和「远程仓库」(如 GitHub/Gitee 上的)。
工作区 (Working Directory):
你实际编辑代码的文件夹,就是仓库里能直接看到、修改的文件。
暂存区 (Staging Area/Index):
临时存放待提交的修改,相当于 “提交前的缓冲区”,可以理解为 “准备要保存的改动清单”。
提交 (Commit):
把暂存区的改动正式保存到本地仓库,生成一个唯一的版本号(哈希值),每一次提交都是一个可追溯的版本。
分支 (Branch):
可以把分支理解为 “平行宇宙”,比如主分支(master/main)是正式版本,你可以新建分支(如 dev、feature)开发新功能,开发完成后再合并回主分支,避免直接修改主分支代码。
远程仓库 (Remote):
托管在网络上的仓库(如 GitHub、Gitee、GitLab),用于同步本地仓库和多人协作。
常用命令清单
绑定 GitHub/Gitee 账户
git config --global user.name "账户名"git config --global user.email "邮箱"生成公钥:
ssh-keygen -t rsa -C "邮箱"复制公钥:
cat ~/.ssh/id_rsa.pub绑定 GitHub/Gitee 远程仓库
关联远程仓库
git remote add origin 你的远程仓库地址验证关联
git remote -v首次推送并绑定分支(main为分支名)
git push -u origin main(若报错)解决分支名不一致
git branch -M main仓库基础操作
在当前文件夹初始化本地 Git 仓库(生成隐藏.git 文件夹,项目首次初始化用)
git init克隆远程仓库到本地
git clone <远程仓库地址>状态 / 历史查看
查看工作区 / 暂存区状态(必用!看哪些文件修改、未跟踪、已暂存,排查问题首选)
git status查看详细提交历史(含版本号、作者、时间、提交说明,按时间倒序)
git log简化版提交历史(仅显示版本号前 7 位 + 提交说明,日常快速查看足够)
git log --oneline查看所有 Git 操作记录(含回滚、分支切换,误删 / 误回滚时可通过这个恢复版本,救命命令)
git reflog文件暂存操作
将指定单个文件添加到暂存区(如 git add README.md,精准暂存)
git add <文件名>将当前目录所有修改 / 新增文件添加到暂存区(日常开发最常用,一键暂存)
git add .仅暂存已跟踪文件的修改 / 删除(不包含新增文件,适合只更新旧文件时用)
git add -u本地提交操作
将暂存区改动提交到本地仓库(-m 后必须写说明,如 git commit -m “修复登录按钮样式bug”)
git commit -m "提交说明"修正最后一次提交(补全提交说明、补充漏暂存的文件,仅本地未推送时用,别改已推远程的提交)
git commit --amend代码推送 / 拉取
将本地分支最新提交推送到远程对应分支(已设默认远程分支后,无需写 origin <分支名>)
git push首次推送分支到远程(-u 绑定本地与远程分支,后续直接用 git push 即可)
git push -u origin <分支名>拉取远程分支最新代码并自动合并到本地当前分支(协作开发必用,先拉再推避免冲突)
git pull拉取远程所有更新(只下载不合并,适合先查看远程改动,再手动合并,更安全)
git fetch分支核心操作
查看本地所有分支(* 标注当前所在分支,一目了然)
git branch新建本地分支(如 git branch dev,仅创建不切换)
git branch <分支名>切换到指定分支(如 git checkout main)
git checkout <分支名>新建并直接切换到该分支(日常开发最常用,如 git checkout -b feature/pay)
git checkout -b <分支名>将指定分支的代码合并到当前分支(如切回 main 后,git merge dev 合并开发分支代码)
git merge <分支名>删除本地已合并的分支(安全删除,未合并会提示报错)
git branch -d <分支名>强制删除本地分支(无视是否合并,误建 / 废弃分支时用,谨慎操作)
git branch -D <分支名>撤销 / 回滚操作
撤销工作区未暂存的修改(Git2.23 + 支持,恢复文件到上一次暂存 / 提交状态,不影响暂存区)
git restore <文件名>将暂存区的文件撤回工作区(取消 git add 操作,比如暂存错文件时用)
git restore --staged <文件名>回滚到指定版本(保留工作区 + 暂存区改动,仅撤销提交记录,适合改提交说明 / 合并多次提交)
git reset --soft <版本号>回滚到指定版本(清空工作区 + 暂存区所有改动,恢复到历史纯净状态,谨慎使用!)
git reset --hard <版本号>单独恢复某个文件到历史版本(不影响其他文件,比整版回滚更灵活)
git checkout <版本号> <文件名>文件删除 / 忽略
删除本地文件并将删除操作添加到暂存区(需后续 commit 提交生效)
git rm <文件名>从 Git 跟踪中移除文件(保留本地文件,仅让 Git 不再管理,适合误添加的配置文件 / 日志)
git rm --cached <文件名>并非命令,是 Git 忽略配置文件(在仓库根目录创建,写入无需跟踪的文件 / 文件夹,如 node_modules/、*.log)
.gitignore 文件Tips
新手必记「核心开发流程命令」(按顺序用,不会错)
提示本地开发 → 推送到远程:git status(查状态)→ git add .(暂存所有修改)→ git commit -m “说明”(本地提交)→ git pull(先拉远程最新,避冲突)→ git push(推送到远程)
关键提醒
注意!版本号可通过 git log —oneline 获取(前 7 位即可,如 a1b2c3d);
多人协作优先用「分支开发」,别直接改 main/master 分支;
git reset —hard 和 git branch -D 是高危命令,操作前务必确认!
部分信息可能已经过时









