Git:切换工作区(计算机)而不提交

Git: Switch workspaces (computers) without committing

有没有办法在不执行 commit/checkout 的情况下应用差异补丁或类似补丁?


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

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

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

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

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

共享网络驱动器

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

git 的好处之一是提交与发布是分开的。这使您可以提交正在进行的工作,而无需发布它们并永久记录 'messy history'。

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

要解决由于 'switching workspaces' 提交导致的不整洁历史的解决方案,我建议您在主题分支或 'dev' 分支上工作,并且当一个功能完成时压扁所有一起工作提交,然后将新整理的历史合并到主分支上。

运行 git rebase -i master 在您的主题分支上,您可以在合并到 master 并推送到 'final history'.

之前对您的提交进行分组和压缩以获得整洁的历史记录

由于您已联网,我在这里尚未看到的另一个选项是 从另一台机器远程访问另一台机器。有时这比使用 git 的全部功能更容易,尤其是您经常不可预测地更换机器。在 Linux 上,您将使用 SSH,而在 Windows 上,您将使用远程桌面协议。您可以通过 Msys2 或 Windows 子系统在 Windows 上使用 SSH for Linux.

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

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