如何在计算机之间同步软件项目?

use*_*730 0 git version-control

当然,我使用 git 进行版本控制,它还可以(在一定程度上)使不同的计算机保持同步。现在考虑这种情况:我一直在对我的计算机进行一些重大更改,但我需要离开并想继续使用我的笔记本电脑。但是代码在当前状态下已损坏;它甚至可能无法编译。

如果我独自使用私人存储库工作,我想我可以继续并提交混乱以继续在我的笔记本电脑上工作。不过它确实有一股难闻的气味。

但是,如果我在同一个存储库上与团队合作,那就不行了。一个分支可能会在这里救我,但这仍然像一种解决方法。

我也考虑过使用像 Syncthing 这样的同步应用程序,但我担心两个不同的同步应用程序可能会在某些时候相互咬合。使用 Syncthing 时我不会放弃 git。

我知道这个问题可能不会导致一个正确的答案。但我认为这是程序员可能面临的一个常见场景,并希望关于如何处理它的不同想法将被认为对社区有所帮助。

hob*_*bbs 5

认为某些东西“太乱而无法提交和推动”的观点真的是在束缚自己。Git 是您将软件更改从一个地方转移到另一个地方的最佳工具,它是您已经拥有的工具,它旨在实现“尽早提交,经常提交”的心态。我的建议是使用它。

如果您担心协作者或 CI 管道会试图将您的分支视为已为他们准备好的东西,当它实际上是一团糟时,我建议对您的分支进行命名空间。您可以为所有进行中的分支提供一个WIP/前缀,或者people/username/为每个开发人员提供一个前缀,并理解那里发生的事情是实验性的,可能无法编译,可能随时被强制推送,不应使用作为任何其他分支等的基础。

然后,做你想做的。如果你正在做一些工作并且你的火车来了,做一个
git commit -anm WIP ; git push回家。在拉到其他地方后,您可以使用“软”git reset来获取工作目录中的更改,同时假装该提交从未存在过,然后您可以在准备好时以更有序的方式提交工作,并强制推送。或者您可以git rebase --interactive稍后使用来完成几乎相同的事情。

这些是我的意见,但我认为如果你有一个好的工具可用,你应该使用它,只要你做诚实的工作并且不误导任何人(这就是命名空间的帮助),你不需要为你的错误开始感到羞耻。