【问题标题】:Git: Switch workspaces (computers) without committingGit:在不提交的情况下切换工作区(计算机)
【发布时间】:2016-07-09 13:10:00
【问题描述】:

有没有办法在不进行提交/签出的情况下应用差异补丁或类似补丁?


我的情况: 我工作时经常在电脑之间切换,我的提交历史有一堆“switching machines”消息。

我最初的猜测是这可能会导致其他麻烦,但我想我可能会问是否有适合这种情况的解决方案或工作流程。

编辑 - 澄清:计算机已联网。

编辑 - 更深层次的想法:现在我想一想,如果不通过 Git,这会导致修订历史出现一些更大的问题。但也许还有另一个我没有想到的工作流解决方案?

【问题讨论】:

  • 机器是否以任何方式联网?
  • @TriskalJM 是的
  • 如果他们联网,将您的工作副本放在共享网络驱动器中似乎可以解决提交日志混乱的问题。
  • 你不能push你对remote repo的更改,然后当你切换机器时,只需pull他们来更新你的代码吗?
  • 啊,我明白了,在这种情况下,要么按照 TriskalJM 的说法,在网络驱动器中创建本地仓库,要么更改您的工作流程以更频繁地提交少量代码并尝试完成在您当时正在使用的机器上“正确”提交。然后,一旦提交并推送,您就可以切换机器了。

标签: git workflow git-commit git-checkout


【解决方案1】:

由于您已联网,我还没有看到这里提到的另一个选项只是从另一台机器远程连接到一台机器。有时这比使用 git 的全部功能更容易,尤其是您经常无法预料地更换机器。在 Linux 上,您将使用 SSH,在 Windows 上,您将使用远程桌面协议。您或许可以通过 Msys2 或适用于 Linux 的 Windows 子系统在 Windows 上使用 SSH。

VSCode 有一个扩展,可以使用 SSH 进行远程开发,这可能对此有所帮助,因为如果您的 git 工作流程完全基于文本,SSH 本身效果最好。如果不是,而且 VSCode 还不够用,可以在两台机器上开启 -X11 转发来访问图形界面。

如果您不在本地网络上,请小心使用 Windows 远程桌面。如果您通过路由器上的端口转发将其公开暴露在互联网上,您将遭受暴力攻击。为避免这种情况,您可以使用带有内置 VPN 的路由器。或者,也许您的情况允许您忍受攻击,并使用超强密码、晦涩的用户名和一些好运来缓解攻击。

【讨论】:

    【解决方案2】:

    关于 git 的好处之一是提交与发布是分开的。这使您可以提交正在进行的提交,而无需发布它们并且永远记录“混乱的历史”。

    我的建议是在切换工作空间时继续进行提交,因为这可以为您提供可靠的时间点备份,并消除对始终联网的工作空间的任何依赖(从而可以使用笔记本电脑进行高效工作例如)。

    为了解决由于“切换工作区”提交而导致的不整洁历史的解决方案,我建议您在主题分支或“开发”分支上工作,当一个功能完成时,将所有工作提交压缩在一起,然后将新整理的历史合并到 master 分支上。

    在您的主题分支上运行 git rebase -i master 可以让您在合并到 master 并推送到“最终历史记录”之前对提交进行分组和压缩以获得整洁的历史记录。

    【讨论】:

    • 我认为这是最通用的解决方案,并且使用 git 本身来解决问题。我可以保留自己的工作分支并使用它来导航功能和工作区。谢谢你的建议。我一定会把它添加到我的工作流程中。
    • 这应该是公认的答案!它完美地工作并使用了 Git 的强大功能,没有任何额外的依赖。
    【解决方案3】:

    将此添加为正确答案,以便可以接受。

    共享网络驱动器

    由于机器已联网,只需将您的工作副本放在共享网络资源上即可。这将消除在切换工作站之前提交的需要。

    【讨论】:

    • 使用这种方法,当你在一台机器上切换到不同的分支时会发生什么?
    • 工作副本(位于网络共享上)现在将位于不同的分支上。在这样做之前你需要提交或隐藏,但无论如何你都必须这样做。
    • 提防像 JetBrains 中自动保存的 IDE,因为如果您同时打开两个编辑器并在它们之间切换并进行工作,尽管工作不同,您会有两个冲突的编辑器。仅出于这个原因,我建议您选择@tul 的答案作为正确答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 2010-10-03
    • 2012-11-18
    • 1970-01-01
    • 2019-12-13
    相关资源
    最近更新 更多