你如何使用Git与多台计算机?

时间:2011-06-16 00:58:34

标签: git

我正在尝试使用git而且我有很多电脑。我通常在桌面上工作,但有时会使用笔记本电脑。

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

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

5 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:6)

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

GitHub是一款出色的托管Git解决方案,可以帮助您免除自己设置的麻烦。您可以从ProGit了解有关遥控器,推动和拉动的更多信息。

就“不完整”的工作而言,您可以使用分支并将分支推送到远程。分支允许您从主服务器(有时称为主干)创建代码的“分支”。完成后,您可以将所有更改合并回master。您可以阅读有关分支here

的更多信息

答案 2 :(得分:6)

首先,您可能希望确保您的雇主对此感到满意......如果您将公司的IP带回家,他们可能不会喜欢它。 : - )

关于拥有像GitHub这样的专用服务器的答案是好的,但意识到你只限于开源(我怀疑你的雇主想要的)或者不得不支付少量的私人存储库(5美元私有5美元) repos,目前)。

IMO最简单的方法是将您的git repo副本保存在手机或USB记忆棒上,将主要仓库添加为遥控器。在您离开回家之前,将此回购与主回购同步。您根本不需要设置服务器; git在文件系统级别工作愉快。

答案 3 :(得分:1)

您真正需要的是可公开使用的单个服务器端存储库。您可以使用http://github.com/。 Github允许您免费创建公共存储库,创建私有存储库是一项付费功能。如果您希望设置自己的存储库服务器,可以查看https://github.com/sitaramc/gitolite它的设置相当容易。

一旦你有了一个公共存储库,那么你可以在工作中从桌面上推送,然后在你的笔记本电脑上回家时,你就可以获取最新信息。

答案 4 :(得分:0)

您还可以使用git reset命令来“擦除”您不希望出现在历史记录中的所有“未完成”提交。

假设您在分支母版中有一个commit_1。然后,您将不同的计算机save1,save2和save3提交给主计算机,从而在每次更换计算机时推动和拉动您的工作。然后加上:

git reset --soft <commit_1_hash>

master(和HEAD)将指向commit_1。但是这里的技巧是,您的工作树和索引(临时区域)仍然具有save3中的文件。然后,您立即提交,例如:

git commit -m "commit_2"

现在,所有保存都不会出现在线性历史记录中。同样,通过保留指向commit_1的分支,您可以仅使用分支名称代替哈希值。

如果您忘记了--soft标志,则索引中将包含commit_1文件,而不是工作树,因此您只需使用add手动添加文件即可。 请勿使用reset标志运行--hard,因为您将替换工作树并丢失对save3的任何引用。如果您担心这种情况,只需创建一个指向save3的新临时分支即可,因此,如果在此过程中发生任何事情,您都将拥有一个备份参考。

如果您搞砸了,可以运行git reflog并在其中查找save3,它应该在那里存放几个月。关于git reset命令的更多信息以及与git checkout的异同之处可以在Pro Git上找到,特别是在“重置揭密”一章中。