为什么 Git 是必备技能?
无论你是前端、后端、运维还是数据工程师,Git 都是必须掌握的技能。它是全球最流行的版本控制系统,GitHub、GitLab、Gitee 都基于 Git。掌握 Git 意味着你可以:
- 追踪每一次代码修改,随时回滚到任意历史版本
- 多人协作开发而不会覆盖彼此的工作
- 通过分支(Branch)同时开发多个功能
- 用 CI/CD 实现自动化测试和部署
安装和配置
apt install git -y
# 配置用户名和邮箱(必须!)
git config --global user.name "你的名字"
git config --global user.email "your@email.com"
# 查看配置
git config --list
基础工作流
你的日常工作流只有 5 个命令:
# 1. 初始化仓库(或克隆已有仓库)
git init
# git clone https://github.com/user/repo.git
# 2. 查看状态
git status
# 3. 添加文件到暂存区
git add .
git add filename
# 4. 提交更改
git commit -m "描述你做了什么修改"
# 5. 推送到远程仓库
git push origin main
分支管理
分支是 Git 的杀手级功能。主分支保持稳定,新功能在独立分支上开发。
# 创建并切换到新分支
git checkout -b feature-login
# 查看所有分支
git branch -a
# 切换分支
git checkout main
# 合并分支(把 feature-login 合并到 main)
git checkout main
git merge feature-login
# 删除已合并的分支
git branch -d feature-login
解决合并冲突
当两个分支修改了同一个文件同一行时,合并会产生冲突。Git 会在文件中标记冲突位置:
<<<<<<< HEAD
你的修改
=======
别人的修改
>>>>>>> feature-branch
手动编辑文件,保留需要的代码,删除标记行,然后:
git add .
git commit -m "解决合并冲突"
回滚操作
每个人都有改错的时候,Git 帮你安全回退:
# 撤销工作区的修改(还没 git add)
git checkout -- filename
# 撤销暂存区的修改(git add 了但没 commit)
git reset HEAD filename
# 撤销最近一次 commit(保留修改)
git reset --soft HEAD~1
# 查看提交历史
git log --oneline -10
# 回退到指定 commit
git reset --hard 提交ID
注意:git reset --hard 会彻底删除工作区的修改,谨慎使用。
Git 常用组合技
暂存当前工作(stash)
# 工作到一半需要紧急切换到其他分支
git stash # 暂存当前修改
git checkout other-branch
# ... 处理紧急问题 ...
git checkout 原分支
git stash pop # 恢复之前的工作
查看某行代码是谁写的
git blame filename
给提交打标签
git tag v1.0.0
git push --tags