Git 教程

1792 字
9 分钟
Git 教程

这是一个展示如何使用 Git 进行版本控制的示例教程。本文档汇总了 Git 的核心概念与常用命令。

基本概念#

仓库 (Repository)#

Git 仓库是 Git 用来存储项目版本历史的地方。它包含了项目的所有文件以及每个文件的修改历史。

本地仓库#

本地仓库存储在你的电脑上,包含完整的版本历史。

远程仓库#

远程仓库存储在网络或其他位置,用于与他人协作和备份。

提交 (Commit)#

提交是 Git 中最基本的操作,它记录了项目的一次快照。每次提交都有一个唯一的哈希值作为标识符。

提交信息#

提交信息应该清晰地描述本次提交的内容,通常包括:

  • 做了什么修改
  • 为什么做这些修改
  • 如何实现的(如果需要)

分支 (Branch)#

分支是 Git 中非常强大的功能,它允许你在不影响主代码的情况下进行开发。

主分支#

通常默认的主分支是 mainmaster,用于存储稳定的代码。

特性分支#

特性分支用于开发新功能,完成后可以合并回主分支。

远程仓库 (Remote)#

远程仓库是存储在网络上的 Git 仓库,用于团队协作。常见的远程仓库托管服务包括 GitHub、GitLab、Gitee 等。

常用命令#

初始化与克隆#

初始化新仓库#

Terminal window
# 在当前目录初始化一个新的 Git 仓库
git init
# 初始化一个名为 my-project 的新目录并在其中创建 Git 仓库
git init my-project

克隆现有仓库#

Terminal window
# 克隆远程仓库到本地
git clone https://github.com/username/repository.git
# 克隆到指定目录
git clone https://github.com/username/repository.git my-directory

基本操作#

查看状态#

Terminal window
# 查看当前工作区和暂存区的状态
git status

添加文件#

Terminal window
# 添加单个文件到暂存区
git add filename.txt
# 添加所有修改的文件到暂存区
git add .
# 添加特定类型的文件
git add *.js

提交更改#

Terminal window
# 提交暂存区的更改,添加提交信息
git commit -m "提交信息"
# 提交所有已跟踪文件的更改
git commit -am "提交信息"

查看历史#

Terminal window
# 查看提交历史
git log
# 查看简洁的提交历史
git log --oneline
# 查看指定文件的修改历史
git log -- filename.txt

查看差异#

Terminal window
# 查看工作区与暂存区的差异
git diff
# 查看暂存区与上次提交的差异
git diff --cached
# 查看两次提交之间的差异
git diff commit1 commit2

分支管理#

查看分支#

Terminal window
# 查看本地分支
git branch
# 查看所有分支(包括远程分支)
git branch -a

创建分支#

Terminal window
# 创建新分支
git branch branch-name
# 创建并切换到新分支
git checkout -b branch-name
# 或者使用新语法
git switch -c branch-name

切换分支#

Terminal window
# 切换到指定分支
git checkout branch-name
# 或者使用新语法
git switch branch-name

合并分支#

Terminal window
# 切换到目标分支
git checkout main
# 合并指定分支到当前分支
git merge branch-name

删除分支#

Terminal window
# 删除本地分支
git branch -d branch-name
# 强制删除本地分支
git branch -D branch-name
# 删除远程分支
git push origin --delete branch-name

远程操作#

查看远程仓库#

Terminal window
# 查看远程仓库信息
git remote -v

添加远程仓库#

Terminal window
# 添加远程仓库
git remote add origin https://github.com/username/repository.git

推送更改#

Terminal window
# 推送本地分支到远程仓库
git push origin branch-name
# 推送并设置上游分支
git push -u origin branch-name
# 推送所有分支
git push --all origin

拉取更改#

Terminal window
# 拉取远程更改并合并到当前分支
git pull
# 拉取指定分支的更改
git pull origin branch-name

抓取更改#

Terminal window
# 抓取远程更改但不合并
git fetch

工作流程#

基本工作流程#

  1. 克隆:从远程仓库克隆代码到本地
  2. 创建分支:为新功能或修复创建分支
  3. 修改:进行代码修改
  4. 添加:将修改添加到暂存区
  5. 提交:提交更改并添加提交信息
  6. 推送:将本地更改推送到远程仓库
  7. 合并:将功能分支合并到主分支

分支策略#

Git Flow#

Git Flow 是一种流行的分支管理策略,包括:

  • main:主分支,存储稳定的发布版本
  • develop:开发分支,集成所有功能分支
  • feature/*:特性分支,用于开发新功能
  • release/*:发布分支,用于准备发布
  • hotfix/*:热修复分支,用于修复生产环境的问题

GitHub Flow#

GitHub Flow 是一种更简单的分支策略:

  • main:主分支,始终保持可部署状态
  • 功能分支:从 main 创建,完成后通过 Pull Request 合并回 main

高级功能#

标签 (Tag)#

标签用于标记重要的提交,通常用于版本发布。

创建标签#

Terminal window
# 创建轻量标签
git tag v1.0.0
# 创建带注释的标签
git tag -a v1.0.0 -m "版本 1.0.0"

推送标签#

Terminal window
# 推送单个标签
git push origin v1.0.0
# 推送所有标签
git push --tags

查看标签#

Terminal window
# 查看所有标签
git tag
# 查看标签信息
git show v1.0.0

撤销操作#

撤销工作区的修改#

Terminal window
# 撤销单个文件的修改
git checkout -- filename.txt
# 撤销所有文件的修改
git checkout .

撤销暂存区的修改#

Terminal window
# 撤销单个文件的暂存
git reset HEAD filename.txt
# 撤销所有文件的暂存
git reset HEAD .

撤销提交#

Terminal window
# 撤销最近的提交,保留修改
git reset --soft HEAD^n
# 撤销最近的提交,不保留修改
git reset --hard HEAD^n

合并冲突#

当两个分支修改了同一文件的相同部分时,会产生合并冲突。

解决冲突#

  1. 查看冲突文件
  2. 手动编辑冲突部分
  3. 添加解决后的文件
  4. 提交解决冲突
Terminal window
# 查看冲突文件
git status
# 编辑冲突文件后,添加并提交
git add filename.txt
git commit -m "解决合并冲突"

最佳实践#

  1. 提交信息要清晰:使用简洁明了的提交信息,描述本次提交的内容和原因
  2. 频繁提交:每次完成一个小功能或修复一个 bug 就进行提交
  3. 使用分支:为不同的功能或修复创建单独的分支
  4. 定期拉取:定期从远程仓库拉取最新更改,避免冲突
  5. 使用 .gitignore:创建 .gitignore 文件,忽略不需要版本控制的文件
  6. 备份远程仓库:使用 GitHub、GitLab 等服务备份代码
  7. 学习 Git 命令:熟悉常用的 Git 命令,提高工作效率
  8. 使用图形界面工具:对于复杂操作,可以使用 Git GUI 工具

总结#

Git 是一个强大的版本控制系统,掌握它可以大大提高开发效率和代码质量。本文介绍了 Git 的基本概念、常用命令、工作流程和最佳实践,希望能帮助你快速上手 Git。

如果你想深入学习 Git,可以参考 Pro Git 这本书,它是 Git 的官方指南,内容非常全面。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Git 教程
https://blog.cllll.link/posts/git-tutorial/
作者
clll
发布于
2026-03-11
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
clll
Hello, I'm clll.
公告
hello,world
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
3
分类
2
标签
9
总字数
3,539
运行时长
0
最后活动
0 天前

目录