Git 常用命令¶
Git 是目前世界上最流行的分布式版本控制系统。专门负责记录你代码的每一次修改,并在多人协作时防止代码冲突。
标准流程¶
一、下载别人仓库 → 本地修改、提交上传(Fork/克隆流程)¶
- 新建空文件夹,不要 git init!
- 终端进入文件夹,克隆代码
- 进入项目文件夹
- 新建开发分支(规范写法,不直接改main)
- 修改代码
- 提交暂存+本地记录
- 第一次推送新分支
- 以后修改:直接
二、自己从零新建项目 → 上传GitHub全流程¶
- 本地新建文件夹,写好自己代码
- 终端进入文件夹
- GitHub网页新建空白仓库(不要勾选README),复制https地址
- 关联远程仓库
- 提交代码
- 第一次推送main主干
- 后续日常修改:
三、公共电脑临时写代码 → 备份到自己的 GitHub¶
核心原则:不污染公共电脑(不留个人信息、不缓存密码),用完即走。
前置准备:生成 GitHub Personal Access Token(只需做一次)
GitHub 已停止用账号密码推送代码,必须用 PAT(个人访问令牌) 代替密码:
GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token
权限勾选 repo 即可,生成后立即复制保存好(只显示一次)。
- 在公共电脑上写好代码,终端进入项目文件夹
- 初始化本地仓库
若提示默认分支名为
master,执行git branch -m main改为main,与 GitHub 保持一致。
也可以一劳永逸:git config --global init.defaultBranch main - 只配置本项目的用户信息(
--local只写入当前仓库的.git/config,不影响这台电脑的全局设置) - GitHub 网页新建空白仓库(不勾选 README),复制 https 地址
- 关联远程仓库
- 提交并推送(会弹出用户名和密码提示)
此时会要求输入东西,用户名填 GitHub 账号,密码填生成的 PAT,不是 GitHub 登录密码
生成PAT:PAT 在 GitHub → Settings → Developer settings → Personal access tokens 里生成,勾选 repo 权限就够用了。
![]()
- 推送完成后,清除本机缓存的凭据(重要!)
或者直接在系统中清除:
Windows:控制面板 → 凭据管理器 → Windows 凭据 → 找到github.com相关条目 → 删除
Ubuntu:git config --global --unset credential.helper,然后删除~/.git-credentials
3套流程核心区别¶
- 别人项目:用 clone → 绝对不用 git init
- 自己新项目:本地先 git init → 再关联远程
- 电脑用户名邮箱 全局只配1次,两个流程都不用重复配
- 所有新分支第一次push都要 -u,绑定后只用 git push
日常工作流¶
黄金法则(最省心、最安全)¶
每次准备写笔记时,第一件事永远是同步云端最新代码:
写完笔记准备离开时,执行标准收工流程:
忘记 git pull 就直接写的后果¶
如果云端有更新(比如另一台电脑昨天刚提交过),而你今天忘记 pull 就直接开始写笔记了,会触发以下 Git 保护机制:
- 写完直接敲
git pull(本地还未 commit) - 结果:Git 会发出警告,甚至拒绝拉取。
-
原因:Git 怕云端拉下来的代码,把你本地刚写的、还没保存的心血直接覆盖抹除。
-
写完直接敲
add->commit->push(霸王硬上弓) - 结果:
git push会被无情拒绝(终端报错[rejected])。 - 原因:Git 发现云端有你本地没有的历史记录。为了保护云端的旧笔记不被你当前的状态强行覆盖,它会强制你必须先拉取(pull)合并。
最佳补救流程(写完才想起没 pull)¶
如果已经洋洋洒洒写了一大堆内容,突然发现自己开工前忘记 git pull 了,请严格按照以下顺序"先存后合":
# 1. 先把本地刚写的笔记"落袋为安",存入本地 Git 仓库
git add .
git commit -m "暂存本地新写的笔记,准备合并代码"
# 2. 拉取云端代码,让 Git 自动进行合并(Merge)
git pull
# 3. 合并成功(终端没有报 Conflict 冲突)后,正常推送到云端
git push
💡 进阶提示:关于代码冲突 (Merge Conflict) 在执行第 2 步
git pull时,如果你新电脑和旧电脑恰好修改了同一篇笔记的同一行字,Git 会不知道听谁的,从而提示"冲突"。 此时只需要在 VS Code 里打开那个标红的文件,点击编辑器上方提示的"保留双方更改"或"保留当前更改",然后重新执行一次add和commit即可解决。
Git 的核心命令按照日常开发的工作流分为了五个阶段,梳理了最常用的命令。
在此之前,理解 Git 的核心架构非常重要。Git 的工作区分为四个区域:
- 工作区 (Working Directory): 你当前真正在写代码的文件夹。
- 暂存区 (Staging Area): 类似于一个"购物车",把你想要保存的修改先放进去。
- 本地仓库 (Local Repository): 你的个人"时光机",代码提交后会在这里生成一个永久记录。
- 远程仓库 (Remote Repository): 托管在云端(如 GitHub, GitLab, Gitee)的仓库,用于备份和团队共享。
1. 初始设置与获取仓库 (Setup & Init)¶
这是你第一次使用 Git 或者开启一个新项目时需要做的。
| 功能说明 | 具体命令 | 通俗解释 |
|---|---|---|
| 配置用户名 | git config --global user.name "Your Name" |
告诉 Git 你是谁。每次提交代码都会带上这个名字。 |
| 配置邮箱 | git config --global user.email "you@example.com" |
告诉 Git 你的联系方式。 |
| 初始化本地仓库 | git init |
在当前文件夹新建一个隐藏的 .git 文件夹,让这个普通文件夹变成 Git 仓库。 |
| 克隆远程仓库 | git clone https://github.com/.../repo.git |
把别人(或自己)在云端的代码完整地下载到本地。 |
2. 日常"单机"工作流:修改与保存 (Daily Workflow)¶
这是你每天写代码用得最多的一组命令,对应上面提到的"工作区 暂存区 本地仓库"。
| 功能说明 | 具体命令 | 通俗解释 |
|---|---|---|
| 查看当前状态 | git status |
极度常用! 随时输入这个命令,看看哪些文件被修改了,哪些在暂存区。 |
| 添加到暂存区 | git add 文件名 或 git add . |
把单个文件或当前目录下的所有修改(. 代表所有)放入"购物车"。 |
| 提交到本地仓库 | git commit -m "修复了xxBug" |
结账!把"购物车"里的修改永久保存下来。-m 后面必须跟着一句简短的说明。 |
| 查看提交历史 | git log |
查看过去的提交记录(谁在什么时间提交了什么说明)。输入 q 退出查看。 |
3. 分支管理:平行宇宙 (Branching)¶
分支是 Git 的杀手锏。当你想开发一个新功能或者修复一个 Bug 时,最好新建一个分支,这样无论你怎么折腾,都不会影响主干(通常是 main 或 master 分支)上正在运行的代码。
| 功能说明 | 具体命令 | 通俗解释 |
|---|---|---|
| 查看本地分支 | git branch |
列出所有分支,当前所在的分支前面会有一个 *。 |
| 创建新分支 | git branch 分支名 |
创建一个平行宇宙,但你的人还留在当前宇宙。 |
| 切换分支 | git checkout 分支名 或 git switch 分支名 |
穿越到另一个平行宇宙去写代码。(推荐用较新的 switch 命令,语意更清晰)。 |
| 创建并切换 | git checkout -b 分支名 或 git switch -c 分支名 |
极度常用! 上面两个步骤的二合一。 |
| 合并分支 | git merge 目标分支名 |
把目标分支的代码合并到你当前所在的分支。 |
4. 远程同步:与团队协作 (Remote Syncing)¶
当你在本地仓库折腾完之后,需要把代码推送到云端(如 GitHub)备份,或者拉取同事的代码。
| 功能说明 | 具体命令 | 通俗解释 |
|---|---|---|
| 查看远程仓库 | git remote -v |
看看你当前连接的是哪个云端地址。 |
| 推送到云端 | git push origin 分支名 |
把你本地某个分支的 commit 推送到云端(origin 通常是云端仓库的默认代号)。 |
| 拉取云端更新 | git pull origin 分支名 |
极度常用! 下载云端最新的代码,并自动合并到你当前的代码中。每天动手敲代码前最好先 pull 一下。 |
5. 救急与后悔药 (Undoing)¶
难免会有提交错代码或者把工作区改得乱七八糟的时候。
| 功能说明 | 具体命令 | 通俗解释 |
|---|---|---|
| 撤销工作区修改 | git restore 文件名 或 git checkout -- 文件名 |
还没 add 进暂存区,发现改废了,一键让文件回到上一次 commit 的状态。 |
| 暂存临时工作 | git stash |
代码写了一半,突然要切分支修 Bug,又不想 commit。用这个命令把当前修改"藏"起来。 |
| 恢复临时工作 | git stash pop |
Bug 修完了切回来,把刚才"藏"起来的代码恢复到工作区继续写。 |
| 撤销某次提交 | git reset --hard 版本号 |
危险操作! 彻底时光倒流到某个版本,这之后的修改会全部丢失。 |
