面向数据科学家的 GitHub 综合指南

通过 UI 和命令行为数据科学家提供的 GitHub 教程——本文背后的目的是让数据科学家/分析师(或任何非工程专业人士)了解如何使用 GitHub 以及遵循哪些最佳实践。本教程将包含使用 UI 和命令行(终端)的组合指南。命名…

面向数据科学家的 GitHub 综合指南

通过 UI 和命令行为数据科学家提供的 GitHub 教程

本文背后的目的是让数据科学家/分析师(或任何非工程专业人士)了解如何使用 GitHub 以及要遵守哪些最佳实践。本教程将包含使用 UI 和命令行(终端)的组合指南。 Git 命令的命名约定在 GitHub 提供的平台上是一致的,因此如果您更喜欢使用 Github 桌面或 GitLab 而不是 Web UI 或命令行,这些技能应该是可交换的。以下是文章的大纲。

目录

  • 为什么使用 GitHub?
    – 什么是版本控制?
  • 创建帐户和 Git 安装
  • 创建存储库
    – Git 忽略和环境文件
    – 授予访问权限
  • 基础 Git 命令
    – 克隆存储库
    – 地位
    – 添加文件
    – 提交文件和提交消息
    – 推动改变
    – 拉动更改
  • 合并冲突
  • 检查文件版本历史
  • ReadME.md 的重要性
  • GitHub 背后的直觉
  • 结束语
  • Resources

为什么使用 GitHub?

GitHub 或任何版本控制软件对于任何软件开发项目都很重要,包括那些数据驱动的项目。 GitHub 是一种软件,它允许通过称为 Git 的工具对您的项目进行版本控制。它允许用户分发代码、协作项目、通过 CI/CD(持续集成/持续部署)帮助部署项目、恢复到项目的先前版本等。如果您有多个人在同一个项目上合作。对于行业专业人士和为开源项目做出贡献的个人来说,这都是很常见的情况。

使用 GitHub 不仅从行业角度来看很重要,而且还是一个强大的工具,可以展示你在科技行业找到工作的技能。它可以让潜在雇主了解您目前拥有的技能水平、您从事的项目、您编写代码、记录和解决问题的能力。它是许多有抱负的软件工程师、数据科学家、分析师、研究人员等用来帮助他们找工作的不可或缺的工具。

什么是版本控制?

版本控制本质上就像名字所说的那样,你正在控制你正在处理的项目的版本。如果您引用了太多流行的开源项目,例如 Airflow 或 Pandas,那么当您安装它们时,它们会关联不同的版本,每个版本在特定时间点对项目都有不同的实现和更改。

创建帐户和 Git 安装

创建 GitHub 帐户并在命令行上安装 Git 相当简单直接。

您可以转到与 GitHub 关联的注册页面并使用您的电子邮件创建一个帐户。请注意,如果您是学生/有学生电子邮件,请注册它以免费访问 GitHub 上的升级计划。[0]

要在命令行上下载 Git,您可以参考以下网站并下载与您的计算机关联的相应文件。根据提示提供的建议配置下载,应该没有任何问题。要检查您是否已在命令行中成功安装 Git,您可以打开命令行/终端并输入 git –version 。这应该返回类似于以下内容的内容:[0]

git version 2.30.1 (Apple Git-130)

这表明 Git 已成功安装在您的计算机上,并且您现在可以使用 Git 命令。

将 Git 链接到您的帐户

运行以下命令将允许您通过 Git 连接到您的 GitHub 帐户。

git config --global user.email "you@example.com"
git config --global user.name "your name"

创建存储库

有两种方法可以创建 GitHub 存储库。您可以在本地计算机中创建一个文件夹并对其进行初始化(通过在命令行中导航到该文件夹​​并键入 git init ),或者您可以使用 UI 创建存储库。我将向您展示如何使用 UI,因为它允许您使用包含 gitignore 和 README.md 文件的简单项目模板进行初始化。

要创建新存储库,请导航到 GitHub 帐户上的存储库部分,然后按新建按钮。如果您在查找存储库部分的位置时遇到问题,可以根据您的帐户更新以下 url:

https://github.com/?tab=repositories
- Replace `` with your GitHub username
or visit https://github.com/new

单击 New 后,系统会要求您提供存储库的名称、描述、隐私设置、README 文件、gitignore 和许可证。您需要填写的唯一必填字段是 Repository Name 。根据您的工作地点,您的项目可能必须遵循特定的命名约定。根据经验,您应该将存储库命名为您将要处理的项目的缩写描述符。它应该简短而简单。但是,请注意,有许多流行的开源存储库不遵循此命名约定。

明智的做法是提供描述并使用 README.md 文件和 gitignore 文件初始化您的存储库。 README.md 文件将包含您提供的描述。我使用了 Python 提供的 gitignore 模板。如果您愿意,您也可以添加许可模板。如果您正在做一个开源项目,那么添加许可文件非常重要。

要使您的存储库真正开源,您需要对其进行许可,以便其他人可以自由使用、更改和分发该软件。
– https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository [1][0]

准备好后,单击 Create repository 。创建后,您应该看到以下内容。

请注意,每个 GitHub 存储库都有空间限制,表明其免费和专业帐户的目录大小不得超过 2GB 的最大阈值(根据他们的文档)。因此,如果您正在处理大型文件,例如机器学习模型或大型 CSV,则不建议将这些结果上传到 GitHub。如果您不使用 AWS,最好将这些结果上传到您的 S3 存储桶或等效设备。[0]

Git 忽略和环境文件

gitignore 文件的作用是忽略特定文件被推送到 GitHub 存储库。当您处理具有高度敏感信息的项目时,这一点至关重要,例如带有用户信息、API 凭据、数据库凭据等的 CSV。无论 repo 是公开的还是公开的,您都不想将这些信息推送到存储库。私人的。

在 Python 中使用 API 凭证时,最好使用环境文件。环境文件本质上是一个文本文件,其中包含运行项目所需的环境变量的键值对。例如,如果您通过 Python 中的 boto3 连接到 AWS,则需要 AWS 密钥和 AWS 访问密钥。然后,您将创建一个 .env 文件来保存该信息,如下所示:

secret_key='my secret key'
secret_access_key='my access key'

您可以通过 os 和 python-dotenv 等库在代码中访问此文件。请注意,当您使用 gitignore 文件初始化存储库时,它不会自动在其中包含 .env 和其他敏感文件。这是您必须手动更新的内容。[0]

授予访问权限

如果您与其他人合作,本教程的这个组件非常重要。在组织中工作时更常见。要将协作者或协作者团队添加到项目中,您首先要进入该存储库的设置。然后您可以单击左侧边栏上的合作者选项。最后,您可以通过搜索并邀请他们在项目上进行协作来添加人员/团队。

基础 Git 命令

对于软件的基础知识,每个人都应该知道 6 个基本的 git 命令。命令如下:

git clone
git status
git add
git commit
git push
git pull

请注意,您可以通过使用 UI 或 GitHub 桌面来使用 GitHub 的全部功能,而无需知道这些命令。出于本教程的目的,我将向您展示如何通过终端/命令行使用这些命令。

另外,请注意,这些并不是 Git 提供的所有命令,还有更多与 UI / GitHub 桌面上产品的各种功能相关联的命令。这些是您需要与大多数数据驱动项目相关联的最基本的。

克隆存储库

克隆存储库将允许您将存储库的内容下载到本地计算机。要克隆存储库,您将需要存储库 URL 或 SSH 密钥。您可以通过单击代码按钮并复制 HTTPS 部分下的 URL 来找到 URL(如下所示)。

然后导航到你的命令行,你可以在你想要的位置克隆(下载)这个存储库。键入以下命令:

git clone 
- Where `` is the URL associated to your repository. I'll be running the following command to clone this tutorial.
git clone https://github.com/vatsal220/git-tutorial.git

现在您已经成功克隆了存储库。您应该能够在您选择的 IDE 中打开它。

Status

运行 git status 命令将允许您检查在本地目录中所做的更改。它将指示文件已被创建/修改/删除。

我创建了一个名为 test.py 的新文件,其中有一行代码打印 hello world。我还通过添加以下内容更新了 gitignore 文件:

# Environment files
.env

导航到链接到此存储库的适当目录后,我可以运行 git status 。以下是†你应该看到的结果:

说明 .gitignore 文件被修改,test.py 文件未跟踪。未跟踪的文件本质上表明它是项目中以前未见过的新文件。

添加文件

随着项目的进展,您可能希望更新您的存储库。这就是 git add 命令允许你做的事情。此命令表示存储库中发生了更改。它表示您要在下一次提交中更新文件。

您可以通过运行以下命令单独添加文件:

git add 
- Where `` is the name of the file you want to add.
git add .gitignore
git add test.py

或者您可以运行以下命令来指示您要添加对存储库所做的所有更改:

git add .

添加文件后,您可以再次检查状态。它应该表明这些文件已被添加并准备好提交。

提交文件和提交消息

编写好的提交消息对于任何项目都至关重要。当您浏览项目的历史并查看不同的进展阶段以了解您之前所做的事情时,拥有一个好的提交消息将为您节省大量时间。提交消息应该简短并且与您对项目所做的更改直接相关。例如,错误的提交消息将类似于:更新的项目。尽管这是准确的,但它显然不会产生有用的信息。一个好的提交信息应该是这样的: 将 .env 添加到 gitignore 并创建了测试文件。

以下是在终端/命令行中编写提交消息的约定:

git commit -m ""
- Replace `` with the commit message. This message should be in quotes.
git commit -m "added .env to gitignore and created test file"

推动改变

现在,为了让这些更改被记录并在 UI 中可见,您需要推送它们。这可以使用 git push 命令轻松完成。

现在检查 UI 中的存储库,您应该会看到文件已被添加/修改。您将看到与更改关联的最新提交消息以及与最近更改关联的时间。

有一个用于推送内容的背心实践列表,尤其是当您在连接到生产环境的存储库上工作时。大多数数据科学家/分析师并非如此,因此它不应该太适用于本文的目标受众,但是如果您有兴趣,本文清楚地概述了最佳实践。我想强调的一个最佳实践是,您应该在开发过程中定期提交和推动更改。不仅仅是在您完成文件/项目的工作之后。提交和推送应该是频繁的,并且应该突出项目中的持续变化和进展。[0]

拉动更改

与我们刚刚将更改推送到存储库的方式类似,我们也可以拉取其他贡献者所做的更改。最佳实践是在进行新开发之前检查存储库,查看项目是否有任何更改以及是否进行了更改,然后将更改拉到本地存储库。

例如,如果我有另一个贡献者在这个项目上创建一个名为 setup.py 的新文件,那么我可以运行 git pull 命令来指示执行拉取请求。运行以下命令将允许您拉取其他贡献者对存储库所做的更改。

git pull origin main
- The word `main` reflects the name of the branch I am pulling from. Unless you've created a new branch, the name of the current branch you're working on will either be `main` or `Master`.

合并冲突

当有多个协作者时,GitHub 中的冲突很常见。当多个协作者更改与同一文件关联的代码时,会发生合并冲突。 Git 无法确定哪个版本的代码是正确的,因此解决此问题的唯一方法是通过手动检查每个协作者所做的更改。这些冲突在合并分支时很常见。

检查文件版本历史

您可以通过查看提交历史来检查与文件关联的版本历史。这将允许您查看与该文件关联的代码中的差异。它将显示添加(以绿色突出显示)和删除(以红色突出显示)的内容。要导航到提交历史记录,请单击下面以蓝色突出显示的提交按钮。

这应该会将您带到一个页面,该页面包含提交、时间戳和提交消息的列表。您可以导航到任何提交并查看与该推送相关的项目中的差异。

正如您在下面看到的,与我们刚刚推送的提交消息相关联。它包括对 .gitignore 和 test.py 文件所做的更改。以绿色突出显示(在右侧),它表明我们将 .env 添加到 gitignore 并将 print(“hello world”) 添加到测试脚本。在左侧,我们可以看到在包含这些更改之前文件的外观。

如本文开头所述,这是 GitHub 最重要的方面之一,因此非常有用。

ReadME.md 的重要性

通常,当用户导航到一个新项目时,README 文件是开发人员查看的第一个文件。该文件应提供有关项目的上下文信息以及如何运行适当的脚本/复制结果。如果复制结果需要环境文件和环境变量,README 应该清楚地指出这一点。如果没有自述文件,任何不熟悉该项目的人都很难弄清楚如何重现从它产生的结果。

以下由 othneildrew 创建的存储库包含一个优秀 README 文件的模板。随意检查一下并将其用于您的项目。[0][1]

GitHub 背后的直觉

让我们在 GitHub 背后的直觉上结束这篇文章,因为现在您应该熟悉它的基本命令和大多数最佳实践。您可以将每个 GitHub 存储库想象成一个图,其中初始节点是与其关联的第一个提交。然后,每个进行中的提交都将使用新节点扩展该图,本质上将存储库的先前版本连接到当前版本。查看与项目关联的版本历史记录与识别一个节点相对于另一个节点所做的更改相同。

在存储库中创建新分支与向图中的最新节点添加新叶相同。新的叶子可以通过分支中的额外提交和推送来扩展。合并回初始流程,您会将新开发的分支中的更改合并到初始分支。整个过程可以在下面直观地看到:

结束语

本教程中没有提到各种命令。 git log 和 git diff 仅举几例。在我看来,学习新事物的最佳方式是深入研究并亲自尝试。使用您为正在处理的项目找到的 UI、GitHub 桌面、Git 和其他资源。它将极大地提高您未来的协作技能和能力。 Git 是一个有据可查的资源,如果您感到困惑或只是好奇,我强烈建议您访问他们的网站。[0]

随时在我的 GitHub 页面上查看与本教程相关的存储库。[0]

如果您希望过渡到数据行业并希望获得经验丰富的导师的指导和指导,那么您可能需要查看 Sharpest Minds。 Sharpest Minds 是一个导师平台,导师(经验丰富的实践数据科学家、机器学习工程师、研究科学家、首席技术官等)将帮助您的发展和学习在数据领域找到工作。在这里查看它们。[0]

Resources

  • [1] https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository[0]

如果你喜欢阅读这篇文章,我写的还有很多其他的你可能也会喜欢。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年4月24日 下午6:03
下一篇 2022年4月25日 下午12:45

相关推荐