当 Jupyter 笔记本在一个分支上运行时,如何安全地切换 Git 分支?

Posted

技术标签:

【中文标题】当 Jupyter 笔记本在一个分支上运行时,如何安全地切换 Git 分支?【英文标题】:How can I safely switch Git branches while a Jupyter notebook is running on one branch? 【发布时间】:2022-01-20 04:48:06 【问题描述】:

当我运行一个在一个 Git 分支中不断产生输出的 Jupyter Notebook(在 VSCode 下)时,当我将 Git 分支切换到同时处理另一个文件/笔记本时,我会遇到冲突吗?

我曾经体验过,当我再次检查时,我的 Jupyter 单元格消失了,所以我想知道这是一个错误,我做了一些意外删除还是由于分支切换。

【问题讨论】:

【参考方案1】:

这是git worktree 的工作。

让一些工作在你的 repo 上运行,并在某个分支上签出。

使用git worktree add <other_dir> 向repo 添加一个新的工作树,git 将在<other_dir> 中重新创建repo 的文件结构

然后cd 到新的工作树并检查 repo 的任何分支,而不会干扰主工作树中正在运行的任何内容。

【讨论】:

我将如何再次合并这两个目录? 因为你的工作树像往常一样在不同的分支上签出。当您在主分支中的流程结束时,提交任何需要的内容,如果另一个分支也准备好合并,则将一个分支合并到另一个分支中,就像您在特定工作流程中所做的那样。与这些分支在不同的克隆中进化没有什么不同。【参考方案2】:

您可以使用 git stash 将您在当前分支上的工作保存在一边,而不会发生冲突和更改分支。然后,当您再次来到您的第一个分支以获取所有工作时,您可以使用 git stash pop。

【讨论】:

当我再次 stash-pop 时,我还看到了 Jupyter 中的新输出,当我进行存储时还没有这些输出?并且新的输出没有被错误地添加到我同时所在的分支中? 不,您不会看到他们,他们会在一边,您可以安全地在新分支上工作。当你回到你的旧分支时,你只会存储 pop。下面是 git 网站对 git stash 的定义:当您想记录工作目录和索引的当前状态,但又想回到干净的工作目录时,请使用 git stash。该命令保存您的本地修改并恢复工作目录以匹配 HEAD 提交。所以如果你隐藏你的分支将匹配 HEAD 提交,你可以安全地切换分支。 如果输出是在工作树中不断产生的,那么在某一点存储不会解决任何问题,因为新文件会不断出现并被 git 检测到。跨度>

以上是关于当 Jupyter 笔记本在一个分支上运行时,如何安全地切换 Git 分支?的主要内容,如果未能解决你的问题,请参考以下文章

pip 安装了 google.colab,现在无法在 Jupyter 笔记本上运行代码

当 Jupyter 笔记本单元出现故障时播放声音

如何在 Anaconda Jupyter 笔记本上运行金字塔自动 arima?

如何通过ssh在服务器上启动jupyter笔记本并在本地浏览器上运行?

如何允许用户在我的服务器上运行存储在我的数据库中的 jupyter 笔记本?

如何修复当我尝试导入任何东西时看到的 Jupyter 笔记本中的错误