Git 简介

已发表: 2022-06-30

当我开始构建网站时,我是“牛仔编码”的,这意味着我经常在服务器上实时编辑文件。 我只花了几个破碎的网站就意识到这是一个糟糕的主意。 然后我开始在我的计算机上本地构建站点。 我不止一次编辑了一个本地文件,只是为了将文件迁移到我的 FTP 客户端中的错误位置。 有时这意味着我会覆盖一个我无法修复的文件,而无需四处寻找我希望保留的一些备份副本。

如果您仍在处理 FTP 并且无法回滚文件,那么是时候学习使用 Git 进行版本控制了。

什么是版本控制?

版本控制系统 (VCS) 是一种软件,可帮助软件开发人员管理其代码随时间的变化。 一个好的 VCS 系统将跟踪所做的代码中的每一次更改。 这意味着如果你破坏了某些东西,你可以回滚到之前工作的代码版本,而无需尝试点击“撤消”直到一切正常。

在团队环境中,VCS 将通过为您提供工具来帮助您与不同的成员合作,这些工具允许您在不同成员更新文件时将代码更改合并在一起。

我在 Git 中做的一件事是为我构建的每个功能创建一个新分支。 这意味着我可以跟踪我在分支上所做的更改,但仍然可以通过返回主分支来恢复站点的当前状态。 稍后我们将详细讨论此工作流程。

什么是 Git?

Git 是一个版本控制系统,但它不是唯一的。 主 WordPress 存储库通过 SVN 运行,但您也可以找到 Git 副本。 还有 Mercurial、Visual Source Safe、VESTA 和许多其他选项。

尽管有所有这些选项,但几乎每个人都使用 Git,所以它是我们今天要学习的版本控制。

基本 Git 术语和命令

在深入研究如何使用 Git 的机制之前,我们需要了解一些术语。 我们只会介绍您会经常遇到的条款。

有关您可能遇到的所有内容的更完整列表,请查看此 Git参考或this Git 命令的完整列表

添加:对代码进行更改后,您将使用命令 git add 将更改添加到,以便可以提交它们。

分支:分支是与主要工作项目不同的存储库版本。 所有存储库都带有一个主分支,或者在较旧的项目中更常见的是一个主分支。 由于 master 这个词的历史问题,最近 Git 和 Github 开始将默认分支名称从 master 更改为 main。 Git 2.28 还允许您为任何新项目设置默认分支名称。

Checkout :您使用git checkout命令在存储库中的不同分支之间切换。 当您使用此命令时,Git 会更改文件的内容或添加和删除分支之间不同的文件。

克隆git clone命令用于从源存储库制作存储库的副本。 您将使用此命令获取远程存储库的本地副本,以便您可以处理代码。

提交:一旦你使用了git add ,你需要使用git commit才能将文件的状态保存在 git 中。

initgit init为您创建一个空存储库,其中包含 Git 需要操作的所有基本文件。

合并:在一个分支上进行更改并添加并提交它们后,您可以使用 git merge 命令将这些更改迁移到其他分支。

Origin :这是存储库主要版本的默认名称。 我通常把我的改成比原产地更具描述性。 如果我正在使用 Github,那么我会更改 Git 中的设置,以便 origin 变为 github。 这有助于我保持头脑清醒。

Push :使用在本地版本的存储库中所做的提交更新远程分支。

存储库:这也可以称为“存储库”,是所有文件的目录,以及对这些文件的更改的 Git 历史记录。

状态git status向您显示工作存储库的当前状态。

.gitignore :这是一个隐藏文件,其中包含 Git 不会跟踪的文件模式。 如果您的.gitignore文件中有.DS_Store ,那么它将忽略 macOS 经常放在文件夹中的所有讨厌的文件。

托管 Git 存储库

在深入研究之前要了解的另一件事是,虽然您的存储库不需要远程位置,但没有远程位置会降低使用 Git 的一些好处。 如果没有托管在其他地方的远程存储库,如果您的计算机死机或被盗,您将无法备份您的代码。

Github 和 Bitbucket 是托管 Git 存储库的两个更受欢迎的地方,因为它们大多是免费的,而且您可以拥有私有存储库。 这确实意味着你的代码在别人的服务器上,所以如果你不喜欢这个想法,你可以在你的服务器上使用 Gitlab 来托管存储库。

安装 Git

在 macOS 上,安装 git 的最简单方法是打开终端并键入 git,它将提示您下载 Xcode 命令行工具来安装 git。 完成后,您可以运行 git –version 查看您拥有的 git 版本。 如果这不起作用,还有其他几种方法可以在 macOS 上安装 git。

对于 Windows 用户,您可以使用官方 Git 安装程序安装 Git。 Git 还与 Github 桌面应用程序捆绑在一起,我们将在稍后讨论。

如果你在 Linux 上,git 应该与你的包管理器捆绑在一起,或者你可以看看这些在 Linux 上安装 git 的方法。

配置 Git 默认值

安装 Git 后,您需要对其进行配置,以便每次提交都使用您的姓名和电子邮件以及提交消息,以使用您首选的编辑器输入与提交相关的任何评论。 我们将研究通过终端应用程序在 macOS 中设置这些的方法。

git config --global user.name "Your Name"将设置您计算机上每次提交的名称。

git config --global user.email "[email protected]"将设置与您所做的每个提交相关联的电子邮件地址。

git config --global core.editor vim将成为 Git vim 的默认编辑器。 虽然我喜欢 vim,但它并不是每个人都喜欢的编辑器。 如果您使用 Atom,那么您将使用 git config –global core.editor “atom –wait” 或 git config –global core.editor “subl -n -w” 来获取 Sublime Text。

如果您喜欢 IDE,那么Visual Studio Code还可以让您在应用程序中直接使用 Git,如果您愿意的话, PHPStorm 也是如此

建立存储库

现在我们已经安装和配置了 git,让我们开始一个基本的存储库。 打开终端并通过键入mkdir test-repository创建一个名为 test-repository 的文件夹。 然后键入cd test-repository以更改为您的 test-repository 目录并键入git init

此时,您的文件夹中将有一个名为.git的隐藏目录。 由于它是一个隐藏文件,您需要在终端中键入ls -a以列出隐藏文件。

使用 git 添加

现在让我们通过在终端中输入touch test.txt来创建一个文件。 接下来键入git status以查看您刚刚添加的文件。

如您所见,我们创建的新文件显示为红色,并告诉我们其状态未跟踪。 这意味着 Git 可以看到该文件,但没有任何记录。

输入git add test.txt告诉 Git 暂存这个文件,然后再次输入git status ,Git 应该会告诉你它知道文件已更改。

将文件提交到 Git

现在我们已经添加了我们的文件,我们需要提交它,以便 Git 保存文件的状态。 我们可以在一行中完成此操作,而无需使用以下命令打开我们的默认编辑器。

git commit -m 'adding our first file'

标志-m告诉 git 单引号内的单词是命令附带的注释。

现在我们的存储库中有一个文件,其状态已保存。

创建一个分支

当你开始接触分支时,Git 的真正威力就出现了。 假设您想在 test.txt 文件中写一堆,但不确定最终是否会保留它,并希望确保您可以返回到当前的空白文件。 我们可以用一个分支来做到这一点。

要创建一个分支,我们可以输入git checkout -b new-branch 。 这是在我们签出分支的同时创建分支的快捷方式,也是我每次需要创建分支时使用的快捷方式。

现在打开我们的test.txt文件,向其中添加一些文本并保存。 然后如上使用git addgit commit保存文件的状态。

接下来,输入git checkout master切换回默认的主分支,然后再次查看test.txt文件的内容。 您会注意到您键入的所有文本都已被删除。 Git 甚至会删除仅在一个分支上的新文件,尽管它确实会保留它的记录,因此它不会消失。

合并一个分支

现在,我们喜欢我们在文件中编写的任何内容,所以让我们将它与我们的主分支集成。 确保您在主分支上并键入git merge new-branch以集成您的更改。

如果您现在查看test.txt的内容,您将在主分支上找到您离开时所做的更改。

在 WordPress 中使用 Git

虽然上面的示例非常简单,但这就是您在项目中开始使用 Git 所需的全部内容。 那么让我们来谈谈如何使用 Git 获得一个 WordPress 项目。

首先要考虑的是文件夹层次结构中的哪个级别应该是 Git 存储库的根。 如果您正在构建一个主题,那么您可以将主题文件夹作为您的存储库。 如果您正在构建插件,同样的逻辑也适用。

我通常同时使用主题和插件,所以我经常使用 wp-content 文件夹作为我的存储库的位置。 当我这样做时,我确保忽略上传文件夹,这样我就不会将所有图像和上传的文件添加到存储库中。 它们使存储库变得混乱,并且会减慢 Git,因为它不擅长压缩图像文件。

如果我正在处理整个部署工作流程,那么我会将根 WordPress 文件夹作为我的 Git 存储库的主要位置。 然后我确保将wp-content/uploadswp-config.php添加到我的.gitignore文件中。 wp-config.php特定于每个 WordPress 安装,所以我不希望它部署在任何其他版本的文件上,这会导致站点停止工作。

您可以看到我用作每个项目起点的.gitignore文件的副本。 它假设您使用wp-content作为 Git 存储库的根目录,因此如果我在 WordPress 的根目录下,我会更改一些忽略模式。

Git GUI 应用程序

虽然我们已经通过 Git 的命令行介绍了基础知识,但并不是每个人都对命令行感到满意,但我知道当我开始使用 Git 时我并不适应。 即使是现在,有时我也想在对我的设置进行任何更改之前查看 Git 正在做什么的可视化表示。

幸运的是,有几个很棒的 Git GUI 客户端可供您使用,所以让我们重点介绍一些。

Github 桌面 (Windows/macOS)

当您查看 Git GUI 客户端时,一个很好的起点是使用 Github 桌面应用程序。

许多开源项目使用 Github 作为他们的代码库进行协作,并使用标准的 Github 流程来完成他们的工作。 Github 桌面客户端旨在帮助您处理此流程,因此它将使创建拉取请求更容易。

如果您不确定什么是拉取请求,请查看 Github 关于拉取请求的文档

不幸的是,对于 Linux 用户来说,没有官方的 Github Desktop 应用程序,但是有一个 Github Desktop 的 fork 可以安装在 Linux 系统上。

Git 塔 (Windows/macOS)

我使用的 Git GUI 是 Git Tower。 Git Tower 适用于 macOS 和 Windows。 当我开始使用 Git 时,我发现解决冲突以及查看此 GUI 中文件之间的不同之处更加容易。

工作副本 (iOS/iPadOS)

如果你像我一样主要在 iPad 上工作,那么你应该看看 Working Copy。 工作副本是一个功能齐全的 Git 客户端,适用于 iOS 和 iPadOS。 它甚至具有快捷方式集成功能,因此您可以自动化部分 Git 工作流程。

包起来

虽然我们今天已经在您的 Git 知识方面涵盖了很多基础知识,但没有一篇博客文章可以详尽地介绍该主题。 您可以通过 Nexcess 帮助文档以及这些优秀资源继续学习。

  • Git 文档
  • 专业 Git 书
  • Laracasts Git 课程
  • Git自己的外部资源

通过使用 Git 来管理您的客户端项目,您可以避免头疼的问题,因为如果您不再需要已完成的工作,您可以回滚更改或丢弃整个分支。 在你认为你已经回滚到足够远之前,不要再使用 Ctrl + Z,Git 会为你记录这一切。