[英]How do you use Git with multiple computers?
我正在尝试使用 git 并且我有很多计算机。 我通常在台式机上工作,但有时会使用笔记本电脑。
当你下班回家并且没有完成代码工作时,你如何在 git 上同步源代码? 你是通过电子邮件发送补丁文件还是只提交不完整的代码?
我同意后者更方便,但我认为它会使 git changelog 变脏。
提交正在进行的工作并将其推送到远程分支。 当您准备好将它合并到您的主分支时,您可以使用交互式 rebase 来重写您的历史记录并消除“正在进行的工作”提交。
首先,您可能想确保您的雇主对此感到满意……如果您将公司 IP 带回家,他们可能不喜欢它。 :-)
关于拥有像 GitHub 这样的专用服务器的答案很好,但要意识到您仅限于开源(我怀疑您的雇主会喜欢)或必须支付少量私有存储库(目前 5 个私有存储库 7 美元) )。
IMO 最简单的方法是在手机或 USB 记忆棒上保留 git 存储库的副本,将主存储库添加为远程存储。 在您离开回家之前,将此存储库与您的主要存储库同步。 您根本不需要设置服务器; git 在文件系统级别愉快地工作。
您真正需要的是一个公开可用的单一服务器端存储库。 您可以使用http://github.com/进行相同的操作。 Github 允许您免费创建公共存储库,创建私有存储库是一项付费功能。 如果您想设置自己的存储库服务器,可以查看https://github.com/sitaramc/gitolite ,设置起来相当容易。
拥有公共存储库后,您可以在工作时从桌面推送,然后在笔记本电脑上回家后,您可以拉取以获取最新信息。
您还可以使用git reset
命令“擦除”所有您不希望出现在历史记录中的“未完成”提交。
假设您在分支 master 中有一个 commit_1。 然后你从不同的计算机上提交 save1、save2 和 save3 到 master,每次更改计算机时推拉你的工作。 然后:
git reset --soft <commit_1_hash>
master(和 HEAD)将指向 commit_1。 但这里的技巧是您的工作树和索引(暂存区)仍然有来自 save3 的文件。 然后您立即提交,例如:
git commit -m "commit_2"
现在所有的保存都不会出现在线性历史记录中。 此外,通过留下指向 commit_1 的分支,您可以只使用分支名称而不是哈希值。
如果您忘记了--soft
标志,您的索引将填充 commit_1 文件,而不是您的工作树,因此您只需使用 add 手动add
文件。 不要使用--hard
标志运行reset
,因为您将替换工作树并丢失对 save3 的任何引用。 如果您害怕,只需创建一个指向 save3 的新临时分支,那么如果在此过程中发生任何事情,您就有一个备份参考。
此外,如果你把事情搞砸了,你可以运行git reflog
并在那里寻找 save3,它应该在那里几个月。 更多关于git reset
命令以及与git checkout
的异同可以在Pro Git上找到,特别是在 Reset Demystified 一章。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.