下面用「一句话 + 场景 + 示例」的方式,把日常 90% 的 Git 操作全部打包给你。
按「工作流顺序」记忆,用完即走,不需要死记硬背。
1. 配置一次,终身受用
命令 |
一句话 |
示例 |
|
告诉 Git 你是谁 |
|
|
告诉 Git 你邮箱 |
|
|
以后新建仓库默认分支叫 main |
一次配置 |
2. 本地新建 / 克隆
命令 |
一句话 |
示例 |
|
把当前文件夹变成仓库 |
|
|
把远程仓库搬下来 |
|
3. 每日开发三件套(高频)
命令 |
一句话 |
示例 |
|
看看哪些文件动了 |
|
|
把改动放进「暂存区」 |
|
|
把暂存区打成一个快照 |
|
4. 分支(保命技能)
命令 |
一句话 |
示例 |
|
查看本地分支列表 |
|
|
新建分支 |
|
|
跳到某分支 |
|
|
新建并直接跳过去 |
|
|
把某分支合到当前分支 |
|
|
删除已合并分支 |
|
5. 远程同步
命令 |
一句话 |
示例 |
|
查看远程地址别名 |
|
|
第一次推送建立关联 |
仅首次 |
|
把本地提交推上去 |
|
|
把远程最新拉下来并合并 |
|
|
只拉不合并,先看一看 |
|
6. 后悔药
命令 |
一句话 |
示例 |
|
工作区改坏了,一键还原 |
|
|
把文件从暂存区撤回 |
|
|
撤销 commit,改动保留在暂存区 |
回退 1 次提交 |
|
撤销 commit + 改动全删 |
危险,慎用 |
|
生成一个新提交来「反做」旧提交 |
不删历史,安全 |
7. 查看历史
命令 |
一句话 |
示例 |
|
极简带分支图的历史 |
一眼看清 |
|
工作区 vs 暂存区差异 |
|
|
暂存区 vs 最新提交差异 |
|
8. 忽略文件
命令 |
一句话 |
示例 |
|
让 Git 装看不见 |
写 |
9.git stash
当你正在写一个功能,突然要切分支修 Bug / 拉最新代码 / 做 CodeReview,而又不想提交半成品代码时,用 stash
把当前改动全部压栈保存,工作区瞬间变干净;之后可随时还原继续 coding
命令 |
作用 |
场景示例 |
|
把当前所有改动塞进抽屉(可写备注) |
紧急修 Bug 前 |
|
查看所有抽屉 |
忘了之前存了啥 |
|
取出最新一条并删除抽屉 |
修完 Bug 回来继续写 |
|
取出指定第 3 条但保留抽屉 |
多次 stash 时 |
10.解决冲突
一、遇到冲突时的症状表现
当你在终端看到这样的提示(重点看最后两行):
Auto-merging app.js
CONFLICT (content): Merge conflict in app.js
Automatic merge failed; fix conflicts and then commit the result.
二、超详细解决流程
步骤1️⃣ 定位冲突文件
运行 git status 命令,你会看到类似这样的输出:
Unmerged paths:
(use "git add ..." to mark resolution) both modified: app.js
(划重点)这里显示的both modified文件就是冲突文件,可能有多个文件需要处理
步骤2️⃣ 打开冲突文件
用VSCode或其他编辑器打开app.js,你会看到这样的标记:
<<<<<<< HEAD
const version = "v2.0";
=======
const version = "v1.5";
<<<<<<< HEAD 到 ======= 之间是你当前分支的代码
======= 到 >>>>>>> feature/new-version 是要合并进来的代码
步骤3️⃣ 手动解决冲突
(超级重要)必须删除所有冲突标记符!!!保留需要的代码。比如我们想要保留v2.0版本:
// 删除下面三行
<<<<<<< HEAD
const version = "v2.0";
=======
const version = "v1.5";
feature/new-version
// 改为
const version = "v2.0";
步骤4️⃣ 标记为已解决
处理完所有冲突文件后,执行:
git add app.js
如果有多个文件,可以用 git add .
步骤5️⃣ 完成合并
git commit -m "Merge feature/new-version and resolve conflicts"
(注意)此时会自动生成合并提交记录