Git 教程
1792 字
9 分钟
Git 教程
这是一个展示如何使用 Git 进行版本控制的示例教程。本文档汇总了 Git 的核心概念与常用命令。
基本概念
仓库 (Repository)
Git 仓库是 Git 用来存储项目版本历史的地方。它包含了项目的所有文件以及每个文件的修改历史。
本地仓库
本地仓库存储在你的电脑上,包含完整的版本历史。
远程仓库
远程仓库存储在网络或其他位置,用于与他人协作和备份。
提交 (Commit)
提交是 Git 中最基本的操作,它记录了项目的一次快照。每次提交都有一个唯一的哈希值作为标识符。
提交信息
提交信息应该清晰地描述本次提交的内容,通常包括:
- 做了什么修改
- 为什么做这些修改
- 如何实现的(如果需要)
分支 (Branch)
分支是 Git 中非常强大的功能,它允许你在不影响主代码的情况下进行开发。
主分支
通常默认的主分支是 main 或 master,用于存储稳定的代码。
特性分支
特性分支用于开发新功能,完成后可以合并回主分支。
远程仓库 (Remote)
远程仓库是存储在网络上的 Git 仓库,用于团队协作。常见的远程仓库托管服务包括 GitHub、GitLab、Gitee 等。
常用命令
初始化与克隆
初始化新仓库
# 在当前目录初始化一个新的 Git 仓库git init
# 初始化一个名为 my-project 的新目录并在其中创建 Git 仓库git init my-project克隆现有仓库
# 克隆远程仓库到本地git clone https://github.com/username/repository.git
# 克隆到指定目录git clone https://github.com/username/repository.git my-directory基本操作
查看状态
# 查看当前工作区和暂存区的状态git status添加文件
# 添加单个文件到暂存区git add filename.txt
# 添加所有修改的文件到暂存区git add .
# 添加特定类型的文件git add *.js提交更改
# 提交暂存区的更改,添加提交信息git commit -m "提交信息"
# 提交所有已跟踪文件的更改git commit -am "提交信息"查看历史
# 查看提交历史git log
# 查看简洁的提交历史git log --oneline
# 查看指定文件的修改历史git log -- filename.txt查看差异
# 查看工作区与暂存区的差异git diff
# 查看暂存区与上次提交的差异git diff --cached
# 查看两次提交之间的差异git diff commit1 commit2分支管理
查看分支
# 查看本地分支git branch
# 查看所有分支(包括远程分支)git branch -a创建分支
# 创建新分支git branch branch-name
# 创建并切换到新分支git checkout -b branch-name
# 或者使用新语法git switch -c branch-name切换分支
# 切换到指定分支git checkout branch-name
# 或者使用新语法git switch branch-name合并分支
# 切换到目标分支git checkout main
# 合并指定分支到当前分支git merge branch-name删除分支
# 删除本地分支git branch -d branch-name
# 强制删除本地分支git branch -D branch-name
# 删除远程分支git push origin --delete branch-name远程操作
查看远程仓库
# 查看远程仓库信息git remote -v添加远程仓库
# 添加远程仓库git remote add origin https://github.com/username/repository.git推送更改
# 推送本地分支到远程仓库git push origin branch-name
# 推送并设置上游分支git push -u origin branch-name
# 推送所有分支git push --all origin拉取更改
# 拉取远程更改并合并到当前分支git pull
# 拉取指定分支的更改git pull origin branch-name抓取更改
# 抓取远程更改但不合并git fetch工作流程
基本工作流程
- 克隆:从远程仓库克隆代码到本地
- 创建分支:为新功能或修复创建分支
- 修改:进行代码修改
- 添加:将修改添加到暂存区
- 提交:提交更改并添加提交信息
- 推送:将本地更改推送到远程仓库
- 合并:将功能分支合并到主分支
分支策略
Git Flow
Git Flow 是一种流行的分支管理策略,包括:
main:主分支,存储稳定的发布版本develop:开发分支,集成所有功能分支feature/*:特性分支,用于开发新功能release/*:发布分支,用于准备发布hotfix/*:热修复分支,用于修复生产环境的问题
GitHub Flow
GitHub Flow 是一种更简单的分支策略:
main:主分支,始终保持可部署状态- 功能分支:从
main创建,完成后通过 Pull Request 合并回main
高级功能
标签 (Tag)
标签用于标记重要的提交,通常用于版本发布。
创建标签
# 创建轻量标签git tag v1.0.0
# 创建带注释的标签git tag -a v1.0.0 -m "版本 1.0.0"推送标签
# 推送单个标签git push origin v1.0.0
# 推送所有标签git push --tags查看标签
# 查看所有标签git tag
# 查看标签信息git show v1.0.0撤销操作
撤销工作区的修改
# 撤销单个文件的修改git checkout -- filename.txt
# 撤销所有文件的修改git checkout .撤销暂存区的修改
# 撤销单个文件的暂存git reset HEAD filename.txt
# 撤销所有文件的暂存git reset HEAD .撤销提交
# 撤销最近的提交,保留修改git reset --soft HEAD^n
# 撤销最近的提交,不保留修改git reset --hard HEAD^n合并冲突
当两个分支修改了同一文件的相同部分时,会产生合并冲突。
解决冲突
- 查看冲突文件
- 手动编辑冲突部分
- 添加解决后的文件
- 提交解决冲突
# 查看冲突文件git status
# 编辑冲突文件后,添加并提交git add filename.txtgit commit -m "解决合并冲突"最佳实践
- 提交信息要清晰:使用简洁明了的提交信息,描述本次提交的内容和原因
- 频繁提交:每次完成一个小功能或修复一个 bug 就进行提交
- 使用分支:为不同的功能或修复创建单独的分支
- 定期拉取:定期从远程仓库拉取最新更改,避免冲突
- 使用 .gitignore:创建 .gitignore 文件,忽略不需要版本控制的文件
- 备份远程仓库:使用 GitHub、GitLab 等服务备份代码
- 学习 Git 命令:熟悉常用的 Git 命令,提高工作效率
- 使用图形界面工具:对于复杂操作,可以使用 Git GUI 工具
总结
Git 是一个强大的版本控制系统,掌握它可以大大提高开发效率和代码质量。本文介绍了 Git 的基本概念、常用命令、工作流程和最佳实践,希望能帮助你快速上手 Git。
如果你想深入学习 Git,可以参考 Pro Git 这本书,它是 Git 的官方指南,内容非常全面。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!