一、第一次拉代码:别上来就pull
正确姿势(命令版):
git clone https://github.com/xxx/项目名.git
cd 项目名
VSCode版:
Ctrl + Shift + P 打开命令面板
输入 Git: Clone
粘贴仓库地址,选个本地文件夹
完事儿
翻车预警:
仓库地址别抄错,http和`ssh不一样,权限也不一样
文件夹路径尽量不要有中文,不然有些工具会抽风
二、日常三连:add、commit、push
这一套你肯定听过,但顺序真的有强迫症会搞混。
命令版:
git add . # 把所有改动都加进去
git commit -m "修复了登录bug"
git push origin main
VSCode版:
左侧源代码管理图标(长得像分叉的路)
改过的文件会列出来,鼠标放上去点 +(暂存)
写个提交消息,比如"fix: 登录bug",然后点上面的✓
再点一下"同步"按钮(或者点...菜单里的推送)

我的翻车经历: 有一次我忘了 git add .,直接 git commit -m "改了一堆",结果提示 nothing added to commit。我心想:我不是改了吗?后来才知道git不知道你要提交哪些文件,必须手动加。
还有一次,我 git add . 完,git commit -m "更新",然后直接关机下班了。第二天leader问我:你代码怎么没推上去?我一看,git push 忘记敲了。
所以我现在习惯:commit 之后立刻 push,一刻都不等。
三、拉取最新代码:pull之前先看一眼
你在写代码,同事也在写。你写完了准备 push,结果报错:
! [rejected] main -> main (fetch first)
翻译成人话:人家先你一步,你得先把他的代码拉下来,合并一下,再推。
命令版:
git pull origin main
VSCode版: 点击底部的"同步"图标,或者点"拉取"再点"推送"。

进阶习惯(重要): 我一般不会直接用 pull。因为 pull = fetch + merge,它自动帮你合并了,有时候你都不知道别人改了什么。
更稳妥的做法:
git fetch origin # 只看远程有什么变化,不改你本地代码
git diff main origin/main # 看看具体改了啥
git merge origin/main # 确认没问题再合并
虽然多敲两行,但能避免"莫名其妙出现一堆冲突"的恐慌。
我的另一个翻车: 有一次我在一个分支上改了三天,准备拉一下主分支的最新代码,结果 git pull origin main 直接把冲突爆了我一脸,三个文件,上百行冲突,我当时真的想删库跑路。
后来学乖了:长时间不拉代码,拉之前先 commit 自己的改动,这样冲突至少能回退。
四、分支操作:别在主分支上直接改
新手最容易犯的错:直接在 main 上改代码,然后 push。
看起来没问题,但如果公司要求代码必须经过PR合入,你就要被骂了。
正确流程:
从主分支切一个新分支
在自己分支上改
推送到远程,发起合并请求(Pull Request / Merge Request)
命令版:
git checkout main
git pull origin main # 确保本地主分支最新
git checkout -b feature/登录优化 # 创建并切换到新分支
# 改代码...
git add .
git commit -m "feat: 登录页记住密码"
git push origin feature/登录优化
VSCode版:
点击左下角分支名(比如 main)
选择"创建新分支",输入名字,比如 feature/登录优化
自动切换到新分支
改完代码后,暂存、提交、推送(推送时会让你选远程分支)
合并请求:
在GitHub/GitLab网页上发起PR
等同事review通过后,点"合并"
翻车现场: 有一次我切分支忘了切,直接在 main 上改了一个功能,然后 push 了。leader问:谁让你改主分支的?我赶紧 git reset --soft HEAD~1 把提交撤回,再切分支重新提交。
记住一句话:凡是你觉得"就改一行"的时候,你最应该切分支。
五、撤销与后悔药:git 不只有 reset --hard
我见过太多人一着急就 git reset --hard HEAD~1,然后发现丢了一周的代码,哭都哭不出来。
几个常用后悔药(按危险程度排序):
1. 只撤销 commit,不丢代码
git reset --soft HEAD~1
HEAD~1 退回到上一个版本,你改过的代码还在工作区,可以重新提交。
2. 撤销 commit 且撤销暂存(代码还在)
git reset HEAD~1
代码变成未暂存状态(就是你改了但还没 add 的样子)。
3. 彻底回到过去(危险)
git reset --hard HEAD~1
代码直接消失。如果你没推到远程,那真的没了。
我的教训: 有一次我 reset --hard 后才发现,我写了两天的功能全没了。还好我有个习惯------每天下班前 push 到远程。从远程 git pull 又救回来了。
所以:频繁 push,是你最大的后悔药。
4. 安全撤销(推荐)
git revert HEAD
这会生成一个新的 commit,内容是把上一次提交的改动全部撤回。不会删历史,不会丢代码,团队协作时最安全。
5. 临时藏起未完成的修改(stash)
你正在改代码,突然需要切到另一个分支修紧急bug。但当前改动还没完成,不能 commit。
git stash # 藏起来
git checkout bugfix
# 修好了
git checkout 原分支
git stash pop # 把藏的东西拿出来
VSCode 里,点 ... 菜单,有"存储"和"弹出存储",是一样的。
六、最后的真心话
git 这东西,单独看每个命令都不难,难的是组合起来、在真实场景下不犯晕。
我学git的过程就是不断踩坑------覆盖过同事代码,亲手删过自己代码,还曾经因为分支切错把一个半成品合到了生产环境。
但现在我养成了几个习惯:
每天上班第一件事:git pull
每天下班前最后一件事:git push
开新功能必切分支
reset 之前先想三秒钟
如果你记不住命令,VSCode 的图形界面真的够用。从 clone 到 push 到 merge,你都可以用鼠标完成。等你熟了再去敲命令也不迟。
最后送你一张我自己整理的常用场景速查(不用背,用到的时候来看就行):
| 我想做啥 | 命令 |
|---|---|
| 第一次拉代码 | git clone <地址> |
| 看当前状态 | git status |
| 把所有改动暂存 | git add . |
| 提交 | git commit -m "消息" |
| 推上去 | git push origin 分支名 |
| 拉最新代码 | git pull origin 分支名 |
| 切新分支 | git checkout -b 新分支名 |
| 切回旧分支 | git checkout 旧分支名 |
| 合并分支 | git merge 要合进来的分支 |
| 暂存现场 | git stash / git stash pop |
| 撤销commit(不丢代码) | git reset --soft HEAD~1 |
| 安全撤销(生成新commit | git revert HEAD |