Datalore logo

Datalore

Collaborative data science platform for teams

Data Science News

如何在 Datalore 中使用 Git

Read this post in other languages:

Git 是数据科学团队常用的工具。 在本教程中,我们将介绍在我们的协作数据科学平台 Datalore 中使用 Git 的方式。

继续阅读,了解如何安装 Git 仓库、编辑这些仓库的内容以及使用 Datalore 进行版本控制。

如何在 Datalore Notebook 环境中安装 Git 仓库

如果您或您的团队开发了一组 Python 脚本或存储在 Git 中的 pip 兼容软件包,您可以从 Datalore 中的 Jupyter Notebook 方便地访问此仓库。

这里有 3 种方式。 我们建议选择最适合您的仓库访问级别和类型的方式。

  使用 Environment | Repositories(环境 | 仓库) 使用 Tools | Terminal(工具 | 终端)或 IPython 魔法命令 使用团队的基础环境(Enterprise 专用功能)
仓库访问级别 仅来自选定 Notebook 来自选定 Notebook 或选定工作区中的每个 Notebook 任何工作区中任何团队成员的任何 Notebook
仓库类型 公共 Git 仓库和通过 SSH 的私有 Git 仓库 任何私有或公共 Git 或非 Git 仓库(Artifactory、Space Packages、私有托管的 PyPI 仓库) 任何私有或公共 Git 或非 Git 仓库(Artifactory、Space Packages、私有托管的 PyPI 仓库)
安装细节 按需安装,可以随时从 UI 刷新 使用 Git CLI 按需安装,某些选项可以通过 init.sh 自动安装并在 Notebook 计算启动时安装 作为自定义 Docker 镜像的一部分安装
刷新类型 刷新按钮并重启内核 通过终端使用 Git CLI 重新构建 Docker 镜像
可用操作 克隆、拉取 克隆、拉取、推送 创建镜像时克隆

将 Git 仓库克隆到 Datalore 的主要目的是获得对自定义 Python 模块、脚本或函数的访问权限,并在 Datalore 中以协作方式进行编辑。 但是,作为 Git 仓库一部分克隆的 Jupyter Notebook 目前还不能编辑。

使用 Environment | Repositories(环境 | 仓库)

使用 Environment | Repositories(环境 | 仓库)是从用户界面将公开可用的 Git 仓库安装到单个 Datalore Notebook 中的最简单方式。 您可以选择仓库的分支并从用户界面刷新连接。 

如果要访问私有 Git 仓库,您可以在 Environment | Repositories | Keys(环境 | 仓库 | 密钥)中提供 SSH 密钥。 

如果要通过个人令牌或用户名和密码访问私有 Git 仓库,请使用 init.sh 脚本或 Terminal(终端)。 

在 Datalore 中安装公开可用的 Git 仓库

使用终端和 init.sh 脚本

要从终端克隆 Git 仓库,首先打开 Notebook,转到 Tools | Terminal(工具 | 终端)并使用 Git CLI 命令克隆仓库。 如果只要在一个 Notebook 中使用仓库,请将其克隆到 Notebook files(Notebook 文件)。 如果要在所有工作区 Notebook 中使用仓库,请将其克隆到 Workspace files(工作区文件)。 

要从 Notebook 访问仓库内容,请导入必要的函数。 Datalore 为导入的 Python 模块提供代码补全和文档弹出窗口。

如果要在每个 Notebook 启动时自动运行一组终端命令,可以使用 init.sh shell 脚本。 

例如,您可以配置私有仓库的访问权限、配置个人令牌的使用、安装非 Python 依赖项,以及挂载文件目录。 您可以在 pip 或 conda 环境管理器执行基本环境设置之前自动执行。

使用 Git CLI 命令在 Datalore 中克隆仓库

如需指定用户名或电子邮件来访问或将文件推送到仓库,请将以下配置添加到 init.sh 脚本中:

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

使用 init.sh 脚本自动运行一组终端命令

要使 init.sh 脚本可用于工作区中的每个 Notebook,请确保附加工作区文件并将 init.sh 文件从 Notebook files(Notebook 文件)移动到 Workspace files(工作区文件)。

使用团队的基础环境

如果要为团队提供对某个仓库的集中访问,您可以将该仓库作为自定义基础环境的一部分。

基础环境是自定义 Docker 镜像,在 Datalore 中创建新 Notebook 时可以轻松用作预构建配置。

通过自定义基础环境提供对 Git 仓库的集中访问

自定义基础环境仅供 Enterprise 用户使用。 要为 Datalore Enterprise 配置自定义基础环境,请使用本指南。 

如何在 Datalore 中编辑 Git 仓库内容

如果要编辑 Git 仓库中可用的 Python 脚本或文件,您可以使用以下方式将仓库克隆到 Attached data(附加数据):

  • Tools | Terminal(工具 | 终端):这将打开终端会话,并允许您执行 Git CLI 命令。 
  • Notebook 代码单元内的 Python 魔法命令。

在 Datalore 中编辑 Git 仓库中可用的 Python 脚本或文件

如果要克隆仓库并只从一个 Notebook 进行编辑,请确保将其克隆到 Notebook files(Notebook 文件)。 如果要从工作区中的任何 Notebook 编辑仓库,请将其克隆到 Workspace files(工作区文件)。 对于 Home workspace files(首页工作区文件),您可能需要将 Workspace files(工作区文件)显式附加到 Notebook。

将仓库克隆到 Attached data(附加数据)后,即可协作编辑文件内容。 

对于 Python 文件,您还可以获得代码补全和语法高亮显示。 要在 Notebook 中使用更新的函数,请确保重启内核或使用自动重载扩展:

%load_ext autoreload
%autoreload 2

协作编辑 Python 文件

⚠️ 作为克隆的 Git 仓库一部分的 Jupyter Notebook 目前无法编辑。 要从仓库查看 Jupyter Notebook,双击后,Datalore 将在新选项卡中打开 Notebook。 如果您对这个工作流特别感兴趣,请参阅本博文的最后一段。

如何使用 Git 和 Datalore 对数据科学工作进行版本控制

Jupyter Notebook 是 Datalore 中的一等公民。 要跟踪 Notebook 中的更改,我们建议使用 Datalore 的 History(历史记录)工具。 

转到 Tools | History(工具 | 历史记录),您可以: 

  • 恢复到以前保存的状态。
  • 查看当前版本的 Notebook 与检查点之间的区别。
  • Ctrl/Cmd+S 创建新的自定义检查点。
  • 查看协作者所做的编辑。

此外,Datalore 会自动创建检查点以供纠正潜在危险操作,例如从 Notebook 删除单元格。

在 Datalore 中对 Notebook 进行版本控制

要对 Datalore 中开发的 Python 文件进行版本控制,您可以使用终端将特定文件或文件夹提交或推送到 Git。

在 Datalore 中对 Git 仓库进行版本控制

如何在 Datalore 中从 Git 导入 Jupyter Notebook

在 Datalore 中,您可以从 Git 的工作区文件系统中导入单个 Jupyter Notebook。 点击 New notebook(新建 Notebook)按钮旁边的向下箭头并粘贴 Notebook URL。

在 Datalore 中从 Git 导入 Jupyter Notebook

Datalore 中未来 Git 支持改进的路线图

我们正在推动与 GitHub 的更深入集成,并于 2023 年晚些时候推出。我们想了解更多您感兴趣的特定工作流和用例。

如果您是数据科学团队的一员,并且 Datalore 中缺少您想要的某些工作流,请联系我们! 我们会为符合条件的候选人提供价值 30 美元的 Amazon 礼品卡,换取 30 分钟的采访。


联系我们

您可以通过多种方式在 Datalore 中使用 Git 仓库。 我们相信,Datalore 的内部 History(历史记录)工具和实时协作功能可以帮助您更专注于数据科学任务,而不是使用 Git。 但是,如果您需要共享脚本、访问权限或对内部仓库的更改,您始终可以使用 Datalore 的 Terminal(终端)、init.sh 脚本和 Environment(环境)管理器。 

祝好

Datalore 团队

本博文英文原作者:

image description

Discover more