一、 Git 是什么?
Git 是一个分布式版本控制系统。它的核心功能是追踪文件的变化,允许您回溯到任何历史版本,协同多人开发,并且高效地管理项目代码。
- 仓库(Repository): 一个被 Git 管理的项目文件夹,包含所有历史记录和配置信息。本地仓库在你的计算机上,远程仓库(如 GitHub, Gitee)在网络服务器上。
- 提交(Commit): 项目文件在某个时间点的完整快照。每次提交都有一个唯一的哈希值(如 a3c4d5e)作为 ID。
- 分支(Branch): 一个指向某个提交的可移动指针。默认的主分支一般叫 main 或 master。创建新分支意味着从某个点开始,独立开发新功能,而不会影响主线。
二、 核心概念:三个区域
理解这三个区域是掌握 Git 的关键:
- 工作区(Working Directory): 你在电脑上直接看到和编辑的文件。
- 暂存区(Staging Area / Index): 一个中间区域,临时存放你准备要提交的文件变化。可以把它想象成购物车。
- 版本库(Repository): 存放所有提交历史的地方(位于项目根目录的 .git/ 文件夹中)。执行提交操作后,暂存区的内容就会被永久保存到这里。
工作流程一般是:修改工作区文件 -> 将变化添加到暂存区 -> 将暂存区的内容提交到版本库。
三、 初始配置
在开始使用 Git 前,需要先配置你的身份信息。这会记录在你的每一次提交中。
# 设置全局用户名和邮箱
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱@example.com"
# 检查当前配置
git config --list
四、 日常开发核心命令
1. 创建仓库与克隆
# 在当前目录初始化一个新的 Git 仓库
git init
# 从远程服务器克隆一个已存在的仓库(最常用)
git clone <远程仓库地址>
2. 查看状态与变化
# 查看工作区、暂存区的状态(哪些文件被修改、哪些已暂存)
git status
# 查看工作区文件与暂存区版本的差异(即,你修改了什么但还没 git add)
git diff
# 查看暂存区与最新提交版本的差异(即,你 git add 了什么但还没 git commit)
git diff --staged
3. 添加与提交
# 将指定文件的更改添加到暂存区
git add <文件名>
# 添加当前目录下所有更改的文件到暂存区(谨慎使用)
git add .
# 交互式地选择要添加的代码块(超级实用,可以精细控制提交内容)
git add -p
# 将暂存区的内容创建一个新的提交
git commit -m "提交信息的描述"
# 将已跟踪文件的所有更改直接提交(跳过 git add 步骤),对新文件无效
git commit -am "提交信息的描述"
提交信息规范: 第一行简明扼要总结更改,空一行后详细描述缘由。例如:fix: 修复用户登录时密码验证失败的问题。
4. 查看历史
# 查看提交历史,最新的在最上面
git log
# 以简洁的单行模式查看历史
git log --oneline
# 图形化显示分支和合并历史
git log --oneline --graph --all
5. 分支操作
# 查看所有分支(当前所在分支前有 * 号)
git branch
# 创建一个新分支
git branch <新分支名>
# 切换到一个已存在的分支
git switch <分支名>
# 或者(旧命令,效果一样)
git checkout <分支名>
# 创建并立即切换到新分支(最常用)
git switch -c <新分支名>
# 或者
git checkout -b <新分支名>
# 将指定分支合并到当前分支
git merge <要合并进来的分支名>
# 删除一个已合并的分支
git branch -d <分支名>
# 强制删除一个未合并的分支
git branch -D <分支名>
6. 与远程仓库交互
# 查看远程仓库地址,默认为 origin
git remote -v
# 从远程仓库获取最新信息(但不会自动合并到你的工作区)
git fetch origin
# 下载代码并自动合并到当前分支(= git fetch + git merge)
git pull origin <远程分支名>
# 将你的本地提交推送到远程仓库
git push origin <本地分支名>
# 首次推送时,建立本地分支与远程分支的追踪关系
git push -u origin <本地分支名>
# 之后再次推送只需
git push
五、 撤销与回退
警告: 对已推送到远程仓库的提交进行撤销操作是危险的,需与团队沟通。
# 撤销工作区中某个文件的修改,使其恢复到最近一次提交的状态(危险!丢失修改)
git checkout -- <文件名>
# 将文件从暂存区撤回到工作区(撤销 git add),但保留文件内容的修改
git reset HEAD <文件名>
# 创建一个新的提交,用于撤销指定提交的所有更改(最安全,尤其适用于公共分支)
git revert <某个提交的哈希值>
# 将版本库回退到某个提交,并重置暂存区,但保留工作区的文件修改
git reset --soft <提交哈希值>
# 将版本库和暂存区都回退到某个提交,但工作区的文件修改仍保留(默认选项)
git reset --mixed <提交哈希值>
# 彻底将版本库、暂存区和工作区都回退到某个提交的状态(危险!丢失所有修改)
git reset --hard <提交哈希值>
六、 暂存当前工作
当你需要临时切换分支但又不想提交未完成的工作时,使用 stash。
# 将当前工作区和暂存区的修改临时储存起来
git stash
# 查看所有的储藏列表
git stash list
# 恢复最近一次储藏的修改,并从储藏列表中删除它
git stash pop
# 恢复某次储藏的修改,但不从列表中删除
git stash apply stash@{0}
七、 实用工作流示例
场景:开发一个新功能
# 1. 基于主分支创建功能分支
git switch -c feature/user-authentication
# 2. 进行开发,修改文件...
# 3. 添加更改并提交
git add .
git commit -m "feat: 实现用户登录接口"
# 4. 继续开发,多次提交...
# 5. 完成后,切换回主分支并获取最新代码
git switch main
git pull origin main
# 6. 回到功能分支,变基或合并主分支代码以解决冲突(推荐变基保持历史整洁)
git switch feature/user-authentication
git rebase main
# (如果发生冲突,解决冲突后执行 `git rebase --continue`)
# 7. 切换回主分支,合并功能分支
git switch main
git merge feature/user-authentication
# 8. 推送到远程
git push origin main
# 9. 删除本地功能分支
git branch -d feature/user-authentication
这份手册涵盖了 90% 的日常 Git 使用场景。提议在实践中多多使用,遇到问题时回来查阅。记住,频繁提交、写好提交信息、大胆创建分支是使用 Git 的最佳实践。
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END

















- 最新
- 最热
只看作者