Git 是一个强大的分布式版本控制系统,但入门只需要掌握几个核心概念和命令。本指南旨在帮助你快速上手,处理日常开发中最常见的 80% 的场景。
核心概念
- 仓库 (Repository / Repo): 你的项目文件夹,包含了项目的所有文件和完整的历史记录。
- 工作区 (Workspace): 你当前正在修改文件的目录。
- 暂存区 (Staging Area / Index): 一个暂存文件快照的地方,准备提交到仓库。
- 本地仓库 (Local Repository): 存储在你自己电脑上的项目版本历史。
- 远程仓库 (Remote Repository): 托管在网络服务器(如 GitHub, GitLab)上的项目版本历史,用于团队协作和备份。
- 分支 (Branch): 为了隔离开发而创建的独立线路,避免在主线上造成混乱。
master
或main
是默认的主分支。 - 提交 (Commit): 将暂存区的文件快照永久保存在本地仓库的一次记录。每次提交都应该是一个完整的、独立的功能或修复。
- HEAD: 一个指针,指向你当前所在的本地分支的最新一次提交。
工作流程图
常用命令
掌握以下几个命令,就能应对绝大部分日常工作。
1. 初始化与克隆
git init
- 在当前目录创建一个新的 Git 仓库。
git init my-project
git clone [url]
- 从远程仓库复制一份完整的项目到本地。这是你参与一个现有项目的起点。
git clone https://github.com/someone/example-repo.git
2. 本地操作核心三步曲
这是你最常执行的操作循环:修改 -> 暂存 -> 提交。
git status
- 查看当前工作区和暂存区的状态,强烈建议在执行任何操作前都先运行此命令,了解当前状况。
git add [file]
- 将工作区的修改添加到暂存区。
git add .
: 添加所有已修改和新创建的文件。git add specific-file.js
: 添加指定文件。
git commit -m "Your descriptive message"
- 将暂存区的所有内容提交到本地仓库,并附上一条说明性的消息。
- 提交信息 (
-m
) 一定要写清楚! 例如:"feat: Add user login functionality"
或"fix: Correct calculation error in payment module"
。
3. 分支管理
分支是 Git 的核心优势,它让并行开发变得简单而安全。
git branch
- 列出所有本地分支。
*
号标记的是你当前所在的分支。
- 列出所有本地分支。
git branch [branch-name]
- 创建一个新分支。
git checkout [branch-name]
或git switch [branch-name]
(推荐)- 切换到指定分支。你的工作区文件会立刻变为该分支的状态。
git checkout -b [branch-name]
或git switch -c [branch-name]
(推荐)- 一个快捷命令,创建并立即切换到新的分支。这是开始一个新功能或修复一个 bug 的标准起手式。
git switch -c feature/new-button
git merge [branch-name]
- 将指定分支的更改合并到当前分支。例如,你在
main
分支,想把feature
分支的代码合进来,就执行git merge feature
。
- 将指定分支的更改合并到当前分支。例如,你在
4. 远程协作
git remote -v
- 查看已配置的远程仓库地址。
git push [remote-name] [branch-name]
- 将本地分支的提交推送到远程仓库。
git push origin main
: 将本地的main
分支推送到名为origin
的远程仓库。origin
是git clone
时默认创建的远程仓库别名。
git pull [remote-name] [branch-name]
- 从远程仓库拉取最新更改并合并到当前本地分支。这相当于
git fetch
+git merge
。 - 在开始新工作或准备推送前,养成先
git pull
的好习惯,以避免冲突。
- 从远程仓库拉取最新更改并合并到当前本地分支。这相当于
5. 查看历史
git log
- 查看提交历史。按
q
退出。 git log --oneline --graph --decorate
: 一个更美观、更简洁的日志视图。
- 查看提交历史。按
极简实战流程
假设你要为一个项目添加一个新功能:
确保你的
main
分支是最新状态:git switch main git pull origin main
为新功能创建一个专门的分支:
# **创建并切换到名为 feature/user-profile 的新分支** git switch -c feature/user-profile
开始编码和修改文件…
分步提交你的修改:
# 查看修改了哪些文件 git status # 添加你想要提交的文件 git add . # **提交你的阶段性成果,写清楚提交信息** git commit -m "feat: Add user avatar and basic info display"
将你的功能分支推送到远程仓库,以便备份和团队评审:
# **首次推送该分支时,需要设置上游(upstream)分支** git push -u origin feature/user-profile # **之后再推送该分支,直接使用** git push
功能完成后,将其合并回主分支:
- 在 GitHub/GitLab 等平台上,你可以发起一个 “Pull Request” (或 “Merge Request”)。这是最佳实践。
- 如果是在本地合并:
# 切换回主分支 git switch main # 拉取最新的主分支代码,以防别人更新了 git pull origin main # **将你的功能分支合并进来** git merge feature/user-profile # **将合并后的主分支推送到远程** git push origin main
(可选)删除已经合并的分支:
# 删除本地分支 git branch -d feature/user-profile # 删除远程分支 git push origin --delete feature/user-profile
掌握以上内容,你就可以自信地使用 Git 进行版本控制了。祝你编码愉快!