1. Git入门:为什么每个开发者都需要掌握这些命令
刚接触代码版本控制时,我完全不明白为什么资深开发者总把"先commit一下"挂在嘴边。直到有次误删了三天的工作成果,才真正体会到Git的价值——它不仅是代码备份工具,更是团队协作的安全网。Git作为分布式版本控制系统,能完整记录每次代码变更,让你随时回退到任意历史版本。
对于Windows用户,建议安装Git for Windows(包含Git Bash);macOS自带git命令;Linux用户通过包管理器安装(如sudo apt install git)。安装后第一件事是配置用户信息:
git config --global user.name "你的名字" git config --global user.email "你的邮箱"重要提示:这里的邮箱建议与代码托管平台(如GitHub)注册邮箱一致,否则贡献统计可能无法关联到你的账号
2. 仓库基础操作:从创建到第一次提交
2.1 初始化仓库的两种场景
场景一:从零开始新项目
mkdir my-project && cd my-project git init场景二:接手已有项目
git clone https://github.com/username/repo.git cd repo实际经验:克隆仓库时如果遇到速度慢的问题,可以尝试替换URL为SSH形式(git@github.com:username/repo.git)或配置国内镜像
2.2 首次提交的标准流程
- 创建或修改文件后,查看变更状态:
git status- 将有价值的变更添加到暂存区:
git add 文件名 # 添加单个文件 git add . # 添加所有变更- 提交到本地仓库:
git commit -m "描述性提交信息"提交信息规范:建议使用"动词+对象"的格式,如"修复登录页面的CSS错位问题"。避免使用模糊的"更新"或"修复bug"
3. 日常开发中的高频命令
3.1 分支管理策略
创建功能分支是团队协作的基础:
git branch # 查看本地分支 git branch new-feature # 创建分支 git checkout new-feature # 切换分支 # 简写版: git checkout -b hotfix # 创建并立即切换合并分支时的黄金法则:
git checkout main # 先切换到主分支 git merge new-feature # 合并指定分支避坑指南:合并前务必先pull最新代码。遇到冲突时,可以用
git mergetool启动图形化工具解决
3.2 撤销操作的三种境界
- 撤销工作区修改(危险!不可逆):
git checkout -- 文件名- 撤销暂存区的add操作:
git reset HEAD 文件名- 修改最后一次commit(仅限未push的情况):
git commit --amend3.3 查看历史的艺术
基础查看:
git log实用变体:
git log --oneline --graph # 简洁版+分支图示 git log -p # 显示具体修改内容 git log --since="2023-01-01"查找特定修改:
git blame 文件名 # 查看每行最后修改者 git show commit_id # 查看某次提交详情4. 团队协作必备技能
4.1 远程仓库操作三板斧
获取最新代码:
git pull origin main上传本地提交:
git push origin 分支名处理常见错误:
# 当push被拒绝时(通常因为远程有更新) git pull --rebase origin main git push origin 分支名4.2 临时保存工作现场
当需要紧急切换分支但当前工作未完成时:
git stash # 保存工作现场 git stash list # 查看保存列表 git stash pop # 恢复最近一次保存进阶技巧:
git stash save "描述信息" # 给stash加备注 git stash apply stash@{1} # 恢复指定stash5. 那些教科书不会告诉你的实战经验
5.1 忽略文件的正确姿势
在项目根目录创建.gitignore文件,常见配置示例:
# 忽略所有.class文件 *.class # 但特别保留Important.class !Important.class # 忽略整个目录 build/特别注意:已经跟踪的文件需要先执行
git rm --cached 文件名才能被忽略规则生效
5.2 大型文件处理技巧
Git默认不适合管理大文件(超过100MB),解决方案:
- 使用
git lfs扩展(需安装配置) - 通过
.gitattributes指定大文件类型:
*.psd filter=lfs diff=lfs merge=lfs -text5.3 命令行增强工具
tig:交互式git日志查看器lazygit:终端图形界面git-extras:提供更多实用命令
安装示例:
# 在macOS上安装tig brew install tig6. 遇到报错怎么办?常见问题速查表
| 错误信息 | 可能原因 | 解决方案 |
|---|---|---|
| fatal: not a git repository | 当前目录不是git仓库 | 确认是否在正确目录,或执行git init |
| error: failed to push some refs | 远程有本地没有的新提交 | 先执行git pull --rebase |
| merge conflict | 合并时文件冲突 | 手动解决冲突后git add+commit |
| Your local changes would be overwritten | 切换分支时有未提交修改 | 使用git stash保存工作现场 |
我强烈建议每个开发者都建立自己的"git急救手册",记录遇到过的特殊案例和解决方案。经过三年团队协作,我的个人笔记里最常翻看的是这些场景:
- 误删分支恢复:
git reflog+git checkout -b 新分支 commit_id - 修改历史提交信息:交互式rebase(谨慎使用)
- 清理历史大文件:
git filter-branch或BFG工具