Git是目前最流行的分布式版本控制系统,几乎所有开发团队都在使用。掌握Git不仅是程序员的必备技能,也是个人项目管理的重要工具。本教程覆盖日常开发中最常用的Git操作。

一、初始化配置

# 设置用户信息 git config --global user.name "你的名字" git config --global user.email "your@email.com" # 初始化新仓库 git init git add . git commit -m "Initial commit" # 克隆远程仓库 git clone https://github.com/user/repo.git git clone git@github.com:user/repo.git

二、日常开发流程

# 查看状态(最常用的命令之一) git status # 添加文件到暂存区 git add filename.php # 添加指定文件 git add . # 添加所有修改 # 提交到本地仓库 git commit -m "feat: 添加用户登录功能" git commit -am "fix: 修复分页bug" # -a自动添加已跟踪文件的修改 # 查看提交历史 git log --oneline --graph --all git log --author="张三" --since="2026-01-01" # 查看文件改动 git diff # 工作区 vs 暂存区 git diff --cached # 暂存区 vs 最近一次提交 git diff HEAD~1 # 与上一次提交的对比

三、分支管理

# 创建并切换到新分支 git checkout -b feature/login # 或使用新语法 git switch -c feature/login # 查看所有分支 git branch -a # 合并分支(先切回主分支) git switch main git merge feature/login # 变基合并(保持提交历史整洁) git rebase main # 在feature分支上执行 # 删除分支 git branch -d feature/login # 已合并的分支 git branch -D feature/old # 强制删除未合并的分支 # 查看分支合并图 git log --oneline --graph --all --decorate

四、远程协作

# 关联远程仓库 git remote add origin https://github.com/user/repo.git # 推送到远程 git push origin main git push -u origin feature/login # 首次推送新分支 # 拉取远程更新 git pull origin main git fetch origin # 只下载,不合并 # 查看远程信息 git remote -v # 多人协作流程 git fetch origin git rebase origin/main # 将本地提交变基到远程最新 git push origin feature/xxx # 推送后发起Pull Request

五、实用技巧

暂存工作(Stash)

# 临时保存当前修改 git stash git stash save "正在做的功能,需要紧急修复bug" # 查看暂存列表 git stash list # 恢复暂存 git stash pop # 恢复并删除暂存记录 git stash apply stash@{0} # 恢复但保留暂存记录

撤销操作

# 撤销工作区修改 git checkout -- filename.php git restore filename.php # 撤销暂存(不丢失修改) git reset HEAD filename.php git restore --staged filename.php # 修改最后一次提交信息 git commit --amend -m "新的提交信息" # 回退到指定版本 git reset --soft HEAD~1 # 保留修改在暂存区 git reset --mixed HEAD~1 # 保留修改在工作区 git reset --hard HEAD~1 # 完全丢弃修改(危险!)

标签管理

# 创建标签 git tag v1.0.0 git tag -a v1.0.0 -m "Release version 1.0.0" # 推送标签 git push origin v1.0.0 git push origin --tags # 推送所有标签 # 查看标签 git tag -l

六、团队协作工作流

推荐的工作流程(Git Flow简化版):

  1. main 分支:始终保持可发布的稳定状态
  2. develop 分支:日常开发集成分支
  3. feature/* 分支:新功能开发,完成后合并到 develop
  4. hotfix/* 分支:紧急修复,从 main 拉取,修复后合并回 main
提交信息规范:
feat: 新功能 | fix: 修复bug | docs: 文档更新
style: 代码格式 | refactor: 重构 | test: 测试
chore: 构建/工具变动

七、解决合并冲突

多人协作时合并冲突是家常便饭。冲突发生时,Git会在文件中标记冲突位置:

<<<<<<< HEAD 你修改的代码 别人修改的代码 >>>>>>> feature/login

解决步骤:

  1. 打开冲突文件,找到 <<<<<<< 标记
  2. 决定保留哪部分(或者合并两部分),删掉标记行
  3. 保存后执行 git addgit commit
# 查看哪些文件有冲突 git status # 用工具辅助解决(推荐) git mergetool # 放弃本次合并,回到合并前状态 git merge --abort # 如果变基过程中出现冲突 git rebase --abort # 放弃变基 git rebase --continue # 解决冲突后继续
小贴士:合并前先用 git fetch 拉取最新代码,在本地先解决完冲突再推送,避免远程直接出冲突。

八、实用进阶命令

Cherry-pick:只取某个提交

当你只需要某个分支上的特定提交,而不是整个分支的修改:

# 把某个提交应用到当前分支 git cherry-pick abc1234 # 应用多个提交 git cherry-pick abc1234 def5678 # 应用一个范围(不包含起始提交) git cherry-pick abc1234..def5678

Bisect:二分法查找Bug

当不知道哪个提交引入了Bug时,bisect 可以帮你快速定位:

# 启动 bisect git bisect start # 标记当前版本有 Bug git bisect bad # 标记某个已知没有 Bug 的版本 git bisect good v1.0.0 # Git 会自动切换到中间版本,你测试后告诉它结果 git bisect good # 这个版本没问题 git bisect bad # 这个版本有 Bug # 重复以上过程,Git 会告诉你哪个提交引入了 Bug # 最后重置 git bisect reset

配置别名,提高效率

# 在 ~/.gitconfig 中添加 git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.lg "log --oneline --graph --all --decorate" git config --global alias.last "log -1 HEAD" # 使用后 git st # 等同于 git status git lg # 等同于漂亮的提交历史图

九、.gitignore 文件

# 常见忽略规则 node_modules/ vendor/ .env .env.local *.log *.bak .DS_Store .idea/ .vscode/ dist/ build/ *.swp Thumbs.db
总结:Git是程序员的基本功,建议把常用命令练习到肌肉记忆。遇到不确定的操作先查文档,不要随便用 --force,尤其是团队共享分支。