繁体   English   中英

如何在多台计算机上使用 Git?

[英]How do you use Git with multiple computers?

我正在尝试使用 git 并且我有很多计算机。 我通常在台式机上工作,但有时会使用笔记本电脑。

当你下班回家并且没有完成代码工作时,你如何在 git 上同步源代码? 你是通过电子邮件发送补丁文件还是只提交不完整的代码?

我同意后者更方便,但我认为它会使 git changelog 变脏。

提交正在进行的工作并将其推送到远程分支。 当您准备好将它合并到您的主分支时,您可以使用交互式 rebase 来重写您的历史记录并消除“正在进行的工作”提交。

Git 有一个“远程”的概念,比如一个中央服务器来推送你的所有代码。 您可以将所有更改推送到远程(例如在工作中),然后当您回到家时,您可以拉取您在工作中所做的提交。

GitHub是一个出色的托管 Git 解决方案,可让您免去必须自己设置的痛苦。 您可以从ProGit 中了解有关遥控器、推和拉的 更多信息

至于“不完整”的工作,您可以使用分支并将您的分支推送到远程。 分支允许您从主程序(有时称为主干)创建代码的“分支”。 完成后,您可以将所有更改合并回母版。 您可以在此处阅读有关分支的更多信息

首先,您可能想确保您的雇主对此感到满意……如果您将公司 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM