Appearance
Git 基础
这是 Git 版本控制系统的基础知识文档,详细介绍其功能、核心概念和使用方法。
什么是 Git?
Git 是一个分布式版本控制系统,用于跟踪文件的变化并协作开发。它由 Linus Torvalds 于 2005 年创建,最初用于 Linux 内核的开发,现在已成为软件开发行业的标准版本控制工具。
主要功能
- 版本控制:跟踪文件的所有历史变化,支持回滚到任意历史版本
- 分支管理:轻松创建、合并和管理分支,支持并行开发
- 分布式协作:每个开发者都有完整的仓库副本,支持离线工作
- 冲突解决:提供强大的工具解决多人协作时的文件冲突
- 历史记录:完整记录每个文件的修改历史、作者和时间
Git 核心概念
1. 仓库(Repository)
- 包含项目所有文件和历史记录的目录
- 分为本地仓库和远程仓库
2. 工作区(Working Directory)
- 当前正在编辑的文件目录
- 显示的是最新版本的文件内容
3. 暂存区(Staging Area)
- 用于临时存放即将提交的文件变更
- 也称为索引(Index)
4. 提交(Commit)
- 将暂存区的文件变更保存到本地仓库
- 每个提交都有唯一的哈希值(SHA-1)
5. 分支(Branch)
- 指向特定提交的指针
- 默认分支为 master 或 main
- 用于并行开发不同功能
6. 远程仓库(Remote)
- 托管在网络上的仓库副本
- 如 GitHub、GitLab、Bitbucket 等
7. 合并(Merge)
- 将一个分支的修改合并到另一个分支
8. 推送(Push)
- 将本地仓库的提交推送到远程仓库
9. 拉取(Pull)
- 从远程仓库获取最新提交并合并到本地
常用 Git 命令
1. 仓库初始化与克隆
bash
# 初始化本地仓库
git init
# 克隆远程仓库
git clone https://github.com/user/repo.git
# 克隆指定分支
git clone -b branch-name https://github.com/user/repo.git2. 工作区与暂存区操作
bash
# 查看文件状态
git status
# 添加文件到暂存区
git add filename.txt
# 添加所有修改文件到暂存区
git add .
# 从暂存区移除文件
git reset filename.txt
# 放弃工作区修改
git checkout -- filename.txt3. 提交与历史查看
bash
# 提交暂存区文件
git commit -m "提交信息"
# 查看提交历史
git log
# 查看简洁的提交历史
git log --oneline
# 查看文件修改历史
git log -- filename.txt
# 查看详细修改内容
git show commit-hash4. 分支管理
bash
# 查看所有分支
git branch -a
# 创建新分支
git branch branch-name
# 切换分支
git checkout branch-name
# 创建并切换分支
git checkout -b branch-name
# 删除分支
git branch -d branch-name
# 强制删除分支
git branch -D branch-name5. 合并与冲突解决
bash
# 合并分支到当前分支
git merge branch-name
# 查看冲突文件
git diff
# 标记冲突已解决
git add filename.txt6. 远程仓库操作
bash
# 查看远程仓库
git remote -v
# 添加远程仓库
git remote add origin https://github.com/user/repo.git
# 推送分支到远程
git push -u origin branch-name
# 推送所有分支
git push --all origin
# 拉取远程更新
git pull origin branch-name
# 获取远程更新但不合并
git fetch origin7. 标签管理
bash
# 创建标签
git tag v1.0.0
# 创建带注释的标签
git tag -a v1.0.0 -m "版本1.0.0"
# 查看所有标签
git tag
# 推送标签到远程
git push origin v1.0.0
# 推送所有标签
git push origin --tags8. 撤销操作
bash
# 撤销最近的提交(保留修改)
git reset HEAD~1
# 撤销最近的提交(不保留修改)
git reset --hard HEAD~1
# 撤销指定提交
git revert commit-hashGit 工作流程
1. 集中式工作流程
- 类似于 SVN,所有开发者都在同一个分支上工作
- 简单适合小型团队
2. Feature Branch Workflow
- 每个功能都在独立的分支上开发
- 功能完成后合并到主分支
3. Gitflow Workflow
- 包含 master、develop、feature、release、hotfix 等分支
- 适合大型项目的版本管理
4. Forking Workflow
- 用于开源项目协作
- 开发者先 fork 仓库,然后提交 Pull Request
最佳实践
- 频繁提交,保持提交内容的单一性
- 编写清晰的提交信息
- 定期拉取远程更新
- 使用分支管理不同功能
- 合理使用标签标记版本
- 不要提交大型二进制文件
通过以上内容,你应该对 Git 的基本概念和常用命令有了全面的了解。在实际开发中,Git 将帮助你高效地管理代码版本并与团队成员协作。