大家好,我是小悟。
Git是啥?打个比方
想象一下,你写代码就像在写一部小说。如果没有Git,你的写作过程可能是这样的:
- 每写一章就复制整个文件夹,命名为“小说最终版”
- 过一会儿又复制一份,命名为“小说最终版_真的”
- 然后“小说最终版_这次真的不改了”
- 最后“小说最终版_老板说要改_备份”
你的文件夹最后会变成这样:
项目_备份/
项目_最终版/
项目_真的最终版/
项目_昨天备份/
项目_改之前/
项目_不知道这是啥但先留着/
Git就是这个混乱世界的救世主! 它就像一个:
- 时光机:可以回到任意版本的“后悔药”
- 人格分裂助手:让你同时写多个功能还不精神错乱
- 代码红娘:帮团队协作不乱套的月老
详细步骤:Git日常生存指南
第一步:初入江湖 - 初始化
# 先给自己贴个标签(重要!不然你的代码就是“无名氏”写的)
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
# 新建项目时的仪式感
mkdir my-awesome-project
cd my-awesome-project
git init # 恭喜!你现在是个Git玩家了
# 或者直接克隆别人的宝库
git clone https://github.com/某人/某项目.git
第二步:日常三连招 - 添加、提交、推送
# 场景:你刚写了一个惊天动地的功能
# 1. 先看看自己干了啥(免得提交了不该提交的)
git status
# 它会告诉你:嘿兄弟,你有37个文件改了,2个文件删了,还有个叫node_modules的怪物文件夹
# 2. 把修改加入“暂存区”(想象成购物车)
git add . # 全都要!(但慎用,可能把测试代码也加进去)
# 或者精挑细选
git add src/awesome-feature.js
git add README.md
# 3. 给这次修改起个响亮的名字(别写“fix bug”,三个月后你会恨自己)
git commit -m "添加了让用户惊呼的炫酷功能
- 用户现在可以一键生成彩虹独角兽
- 修复了昨天咖啡洒键盘上导致的bug
- 优化了性能,现在快得能追上光速"
# 4. 推送到远程仓库(不然只有你电脑能看见)
git push origin main
# 如果报错?大概率是队友比你快一步,先拉取一下
git pull origin main
# 解决冲突后再push
第三步:分支操作 - 人格分裂的艺术
# 查看所有分支(就像看你的多重人格)
git branch
# 输出:
# * main # 当前人格
# feature-ai # 在写AI功能的人格
# fix-bug # 在修bug的人格
# 创建新分支(分裂出新人格)
git checkout -b feature-magic-spell
# 等价于:
git branch feature-magic-spell # 创建分支
git checkout feature-magic-spell # 切换过去
# 在新分支里为所欲为
echo "console.log('阿瓦达啃大瓜!');" > spell.js
git add .
git commit -m "添加不可饶恕咒(仅供开发测试)"
# 切回主分支(恢复正常人格)
git checkout main
# 合并分支(人格融合!)
git merge feature-magic-spell
第四步:救命!我搞砸了 - 撤销操作大全
# 场景1:刚才的代码写得像一坨意大利面
git checkout -- 文件名 # 单个文件回到上次提交的状态
# 场景2:add错了文件
git reset HEAD 文件名 # 从暂存区移除
# 场景3:刚才的提交信息写成了“asdfjkl;”
git commit --amend -m "正经的提交信息"
# 场景4:想回到昨天的幸福时光
git log # 查看提交历史,找到那个幸福的commit id
git reset --hard commit_id # 警告!这是后悔药中的核弹
# 更温柔的方式
git revert commit_id # 新建一个提交来撤销之前的提交
第五步:团队协作 - 如何不被打
# 1. 每天开始前先同步最新代码
git pull origin main
# 2. 在独立分支上开发
git checkout -b feature/你的名字-功能描述
# 3. 经常提交,写清晰的提交信息
git add .
git commit -m "完成用户登录功能的前端验证部分"
# 4. 推送到远程
git push origin feature/你的名字-功能描述
# 5. 在GitHub/GitLab上发起Pull Request(合并请求)
# 等队友review,修改,最后合并
# 6. 删除已经合并的本地分支(保持整洁)
git branch -d feature/你的名字-功能描述
第六步:高级技巧 - 让你看起来像大神
# 暂存当前工作(临时有事要处理其他bug)
git stash # “等我一下,马上回来”
git stash list # 查看所有暂存的工作
git stash pop # 恢复最近暂存的工作
# 查看谁写了这行天杀的代码
git blame 文件名
# 输出:每行代码后面跟着作者和提交信息
# 可以理直气壮地说:“看!这bug不是我写的!”
# 优雅的提交历史
git log --oneline --graph --all
# 输出漂亮的树状图,适合截图发朋友圈装X
# 搜索历史提交
git log -p --grep="登录" # 搜索包含“登录”的提交
总结:Git生存法则
1. 提交要勤快,信息要清楚
- 每次提交就像一个保存点,别等到游戏快通关才存盘
- 提交信息是你写给未来自己(和同事)的情书,别写火星文
2. 分支是你的安全屋
- main分支是圣殿,别直接在上面瞎搞
- 新功能、修bug都在独立分支,像实验室一样隔离起来
3. 推送前先拉取
- 就像进门先敲门,避免撞见尴尬场面
- 冲突不可怕,可怕的是强行覆盖队友的代码(会被请喝茶)
4. Git不是备份工具
- 别把编译结果、密码、超大文件塞进去
- 用
.gitignore文件告诉Git哪些要忽略,比如:
node_modules/
*.log
.env
.DS_Store
5. 记住核心哲学
工作区 → 暂存区 → 本地仓库 → 远程仓库
↓ ↓ ↓ ↓
写代码 → 挑挑拣拣 → 正式保存 → 云端备份
最后的忠告:
Git就像一段感情关系:
- commit是日常的关心和投入
- push是表达和分享
- pull是倾听和理解
- merge是妥协和融合
- revert是…好吧,有时候确实需要“我们回到朋友关系吧”
记住,每个Git大神都曾经:
- 强制推送过然后默默改写历史
- 合并冲突时删掉别人的代码然后假装是bug
- 在凌晨三点谷歌“git如何找回删除的分支”
现在,去征服你的代码吧!当你第一次成功解决冲突时,那种感觉就像拆弹专家剪对了电线一样刺激。祝你提交愉快,合并顺利,永远不需要git reset --hard!
温馨提示:如果你的Git操作让项目回到了石器时代,别慌,深呼吸,然后小声说:“我好像需要备份的备份的备份…”

谢谢你看我的文章,既然看到这里了,如果觉得不错,随手点个赞、转发、在看三连吧,感谢感谢。那我们,下次再见。
您的一键三连,是我更新的最大动力,谢谢
山水有相逢,来日皆可期,谢谢阅读,我们再会
我手中的金箍棒,上能通天,下能探海

11万+

被折叠的 条评论
为什么被折叠?



