0

0

Git 版本控制系统的完整指南

星夢妙者

星夢妙者

发布时间:2025-07-22 10:50:34

|

606人浏览过

|

来源于php中文网

原创

git 版本控制系统的完整指南

什么是 Git?Git 是一个广受欢迎的版本控制系统。它由 Linus Torvalds 在 2005 年创建,并由 Junio Hamano 维护至今。

它用于:

  • 跟踪代码更改
  • 记录谁进行了更改
  • 协作开发

Git 能做什么?使用仓库管理项目:

  • 克隆项目以在本地副本上工作
  • 使用暂存和提交来控制和跟踪更改
  • 分支和合并以便在项目的不同部分和版本上工作
  • 将项目的最新版本拉到本地副本
  • 将本地更新推送到主项目

使用 Git 在文件夹上初始化 Git,使其成为一个仓库。Git 会创建一个隐藏的文件夹来跟踪该文件夹中的更改。当文件被更改、添加或删除时,它被视为已修改。你可以选择要暂存的已修改文件。已暂存的文件被提交,这会促使 Git 存储文件的永久快照。Git 允许你查看每个提交的完整历史。你可以恢复到以前的任何提交。Git 不会在每个提交中存储文件的单独副本,而是跟踪每个提交中所做的更改!

切换平台:将焦点转向 GitHub、Bitbucket 或 GitLab。

为什么使用 Git?超过 70% 的开发者使用 Git!开发者可以从世界任何地方协同工作。开发者可以查看项目的完整历史。开发者可以还原到项目的早期版本。

什么是 GitHub?Git 与 GitHub 不同。

GitHub 提供使用 Git 的工具

GitHub 是世界上最大的源代码托管服务,自 2018 年起由 Microsoft 拥有。

在本教程中,我们将专注于使用 Git 与 GitHub。

Git 暂存环境:Git 的核心功能之一是暂存环境和提交的概念。

当你工作时,你可能会添加、编辑和删除文件。但无论何时你达到一个重要阶段或完成工作的一部分,都应该将文件添加到暂存环境。

已暂存的文件是准备提交到你正在工作的仓库的文件。不久后,你将更多地了解提交。

目前,我们已完成了对 index.html 的工作。所以我们可以将它添加到暂存环境中:

git add index.html

文件应该已被暂存。让我们检查状态:

git status

在主分支上

尚未提交

AIBox 一站式AI创作平台
AIBox 一站式AI创作平台

AIBox365一站式AI创作平台,支持ChatGPT、GPT4、Claue3、Gemini、Midjourney等国内外大模型

下载

待提交的更改:

(使用 "git rm --cached ..." 来取消暂存)

新文件: index.html

现在该文件已被添加到暂存环境。

Git 添加多个文件:你还可以一次暂存多个文件。让我们向我们的工作文件夹添加 2 个文件。再次使用文本编辑器。

一个描述仓库的 README.md 文件(推荐用于所有仓库):

代码语言:markdown复制```markdown

hello-world

Hello World repository for Git tutorial This is an example repository for the Git tutorial on https://www.php.cn/link/0ab3906a724cfe5ba8b36e7c25d33491 This repository is built step by step in the tutorial.

<code>
一个基本的外部样式表(bluestyle.css):
<p>代码语言:css<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="<a href="https://www.php.cn/link/c9041cfd2a40932691855abd98fd219a">http://www.w3.org/2000/svg"><path</a> clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制<code>css body { background-color: lightblue; } h1 { color: navy; margin-left: 20px; }</code></pre><p>并更新 index.html 以包括样式表:</p><p>代码语言:html<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制</code>html</p><title>Hello World!</title><link href="bluestyle.css" rel="stylesheet"></link><h1>Hello world!</h1><p>This is the first file in my new Git Repo.</p></p><pre class="brush:php;toolbar:false;"><code><p>现在将当前目录中的所有文件添加到暂存环境:</p><p>代码语言:bash<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制```bash
git add --all</p><pre><code>
使用 `--all` 而不是单个文件名将会将所有更改(新文件、修改过的文件和已删除的文件)都暂存。

代码语言:bash<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制```bash
git status</code></pre><p>在主分支上</p><p>尚未提交</p><p>待提交的更改:</p><p>(使用 "git rm --cached ..." 来取消暂存)</p><p>新文件: README.md</p><p>新文件: bluestyle.css</p><p>新文件: index.html</p><p>现在所有 3 个文件都已添加到暂存环境中,我们准备进行第一次提交。</p><p>如何添加新文件到 Git 仓库:从创建本地仓库到添加文件:</p><p>添加 Git 新文件:你刚刚创建了你的第一个本地 Git 仓库。但它是空的。</p><p>所以让我们添加一些文件,或使用你喜欢的文本编辑器创建一个新文件。然后保存或移动它到你刚刚创建的文件夹中。</p><p>在这个示例中,我将使用一个简单的 HTML 文件,类似于这样:</p><p>代码语言:html<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制```html</p><title>Hello World!</title><h1>Hello world!</h1><p>This is the first file in my new Git Repo.</p></code>

然后将它保存到我们的新文件夹中,命名为 index.html

让我们回到终端并列出当前工作目录中的文件:

代码语言:bash复制```bash ls index.html

<code>
`ls` 会列出目录中的文件。我们可以看到 `index.html` 存在。
<p>然后我们检查 Git 的状态,看它是否是仓库的一部分:</p><p>代码语言:bash<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="<a href="https://www.php.cn/link/c9041cfd2a40932691855abd98fd219a">http://www.w3.org/2000/svg"><path</a> clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制<code>bash git status</code></pre><p>在主分支上</p><p>尚未提交</p><p>未跟踪的文件:</p><p>(使用 "git add ..." 来将其包含在将要提交的内容中)</p><p>index.html</p><p>没有添加到提交但未跟踪的文件存在(使用 "git add" 来跟踪)</p><p>现在 Git 已经意识到这个文件了,但还没有将它添加到我们的仓库中!</p><p>Git 仓库文件夹中的文件可以处于以下 2 种状态之一:</p><ul><li>已跟踪 - Git 已知道的文件,并已添加到仓库</li><li>未跟踪 - 存在于你的工作目录中,但尚未添加到仓库</li></ul><p>当你首次将文件添加到空仓库时,它们都是未跟踪的。要让 Git 跟踪它们,你需要将它们暂存,或者将它们添加到暂存区。</p><p>我们将在下一章中介绍暂存区。</p><p>Git 提交:既然我们已经完成了工作,我们准备从暂存转到提交我们的仓库。</p><p>添加提交可以跟踪我们的进度和更改。Git 将每个提交视为更改点或“保存点”。如果你发现 bug 或想要做更改,它是项目中可以返回的一个点。</p><p>当我们提交时,应该始终包含一条消息。</p><p>通过为每个提交添加清晰的消息,对于自己(和其他人)来说,很容易看到发生了什么以及何时发生的。</p><p>代码语言:bash<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制</code>bash
git commit -m "Hello World 的首次发布!"
[master (root-commit) 221ec6e] Hello World 的首次发布!
3 files changed, 26 insertions(+)
create mode 100644 README.md
create mode 100644 bluestyle.css
create mode 100644 index.html</p><pre class="brush:php;toolbar:false;"><code><code>commit</code> 命令执行提交,<code>-m "message"</code> 添加一条消息。</p><p>已暂存环境已被提交,消息是:"Hello World 的首次发布!"</p><p>不经过暂存提交:有时,当你进行小的更改时,使用暂存环境似乎是浪费时间。可以直接提交更改,跳过暂存环境。<code>-a</code> 选项会自动将每个已跟踪的更改文件添加到暂存区。</p><p>让我们对 <code>index.html</code> 进行小更新:</p><p>代码语言:html<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="<a href="https://www.php.cn/link/c9041cfd2a40932691855abd98fd219a">http://www.w3.org/2000/svg"><path</a> clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制<code>html <title>Hello World!</title> <link href="bluestyle.css" rel="stylesheet"></link> <h1>Hello world!</h1> <p>This is the first file in my new Git Repo.</p> <p>A new line in our file!</p></code></pre><p>并检查我们仓库的状态。但这次,我们将使用 <code>--short</code> 选项以更紧凑的方式查看更改:</p><p>代码语言:bash<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制</code>bash
git status --short
M index.html</p><pre class="brush:php;toolbar:false;"><code>
注意:短状态标志是:</p><ul><li><code>??</code> - 未跟踪的文件</li><li><code>A</code> - 已添加到暂存</li><li><code>M</code> - 修改过的文件</li><li><code>D</code> - 已删除的文件</li></ul><p>我们看到我们预期的文件已被修改。所以让我们直接提交它:</p><p>代码语言:bash<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="<a href="https://www.php.cn/link/c9041cfd2a40932691855abd98fd219a">http://www.w3.org/2000/svg"><path</a> clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制<code>bash git commit -a -m "用新行更新了 index.html" [master 09f4acd] 用新行更新了 index.html 1 file changed, 1 insertion(+)</code></pre><p>注意:通常不建议跳过暂存步骤。</p><p>跳过暂存步骤有时会导致包含不需要的更改。</p><p>Git 提交日志:要查看仓库的提交历史,可以使用 <code>log</code> 命令:</p><p>代码语言:bash<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制</code>bash
git log</p><pre class="brush:php;toolbar:false;"><code>
这将显示仓库的提交历史:</p><p>代码语言:bash<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="<a href="https://www.php.cn/link/c9041cfd2a40932691855abd98fd219a">http://www.w3.org/2000/svg"><path</a> clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>复制```bash
commit 09f4acd3f8836b7f6fc44ad9e012f82faf861803 (HEAD -> master)
Author: w3schools-test
Date:   Fri Mar 26 09:35:54 2021 +0100</p><pre class="brush:php;toolbar:false;"><code>用新行更新了 index.html</code>

commit 221ec6e10aeedbfd02b85264087cd9adc18e4b26 Author: w3schools-test Date: Fri Mar 26 09:13:07 2021 +0100

<code>Hello World 的首次发布!</code></pre><p>最后看完如果觉得有帮助,欢迎 点赞、收藏、关注</p></code>

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

4296

2026.01.21

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

979

2023.07.05

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

582

2023.07.06

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

275

2023.07.24

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

568

2024.04.09

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

533

2024.04.09

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2917

2024.08.16

vsd文件打开方法
vsd文件打开方法

vsd文件打开方法有使用Microsoft Visio软件、使用Microsoft Visio查看器、转换为其他格式等。想了解更多vsd文件相关内容,可以阅读本专题下面的文章。

510

2023.10.30

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 4.2万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.6万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 94人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号