Git 是现代软件开发中不可或缺的分布式版本控制系统。无论是个人项目还是团队协作,掌握 Git 的正确用法都能极大提升开发效率。本文将介绍最常用的 Git 命令,并分享一套可靠的协作流程与最佳实践。
git config --global user.name 和 git config --global user.email)。
每一个 Git 仓库都从初始化开始,或者从远程克隆。
# 初始化新仓库
git init
# 克隆远程仓库
git clone https://github.com/用户名/仓库名.git
# 查看当前状态
git status
# 添加文件到暂存区
git add 文件名 # 添加单个文件
git add . # 添加所有改动
# 提交到本地仓库
git commit -m "提交信息"
# 推送到远程仓库(首次推送需设置上游)
git push -u origin main # 或 master
# 拉取远程更新
git pull
git pull 实际上是 git fetch + git merge 的简写,建议在推送前先拉取,避免冲突。
分支让多人同时开发不同功能成为可能。主分支(main 或 master)通常用于生产环境代码。
# 查看本地分支
git branch
# 查看所有分支(包括远程)
git branch -a
# 创建新分支
git branch feature-login
# 切换分支
git checkout feature-login
# 创建并切换(常用)
git checkout -b feature-login
# 合并分支(先切换回目标分支,如 main)
git checkout main
git merge feature-login
# 删除分支(合并后清理)
git branch -d feature-login
注意:合并时若遇到冲突,Git 会标记冲突文件,需要手动编辑后再次 git add 并 git commit。
团队协作中,通常采用 GitHub Flow 或 GitLab Flow 模式。核心思想:
feature/user-auth)。# 本地开发流程示例
git checkout -b feature/user-auth
# ... 编写代码、提交 ...
git push origin feature/user-auth # 推送到远程,然后在网页端创建 PR
使用清晰、统一的提交信息,推荐遵循 Conventional Commits 规范:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
例如:feat: 添加用户登录功能、fix: 修复空指针异常、docs: 更新 README。
避免将无关的改动混入同一个分支。一个分支只解决一个问题。合并前可以使用 git rebase 整理提交历史:
# 将当前分支的提交变基到目标分支(如 main)
git rebase main
# 交互式变基,压缩或修改提交
git rebase -i HEAD~3 # 操作最近3次提交
注意: 不要对已推送的公共分支进行变基,以免给他人造成困扰。
忽略编译产物、依赖文件、敏感信息等。GitHub 提供了常用语言的 .gitignore 模板。例如 Java 项目的 .gitignore:
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
在 Git 托管平台(如 GitHub、GitLab)上,可以设置分支保护规则:
main 分支,必须通过 PR。git log 找到提交哈希,然后 git cherry-pick <hash> 到正确分支,再回退原分支。git checkout -- 文件名 或 git restore 文件名。git reset --hard ORIG_HEAD(谨慎使用)。Git 的功能远比本文列出的丰富,但掌握以上基础命令和流程,已经足以应对绝大多数日常开发与协作场景。关键在于理解 Git 的数据模型(提交、树、快照)和分支的本质——指针。持续练习并养成良好的习惯,Git 将成为你得心应手的工具。