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

如何在多台计算机上使用Git?,git,Git,我正在尝试使用git,我有很多电脑。我通常在桌面上工作,但有时使用笔记本电脑 当你下班回家还没有完成代码的工作时,如何在git上同步源代码?您是通过电子邮件发送补丁文件,还是只向git提交不完整的代码 我同意后者更方便,但我认为它会使git变更日志变脏 Git有一个“远程”的概念,比如一个中央服务器来推送所有代码。您可以将所有更改推送到远程(比如从工作中),然后当您到家时,您可以从工作中提取提交 是一个优秀的托管Git解决方案,它可以省去您自己设置Git的痛苦。您可以从中了解有关遥控器、推送和拉

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

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

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

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

是一个优秀的托管Git解决方案,它可以省去您自己设置Git的痛苦。您可以从中了解有关遥控器、推送和拉送的更多信息


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

您真正需要的是一个公开的服务器端存储库。你可以用同样的方法。Github允许您免费创建公共存储库,创建私有存储库是一项付费功能。如果您希望设置自己的存储库服务器,您可以查看一下它的设置相当简单


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

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

首先,你可能想确保你的雇主同意这一点。。。如果你把公司IP带回家,他们可能不喜欢。:-)

关于像GitHub这样的专用服务器的答案是好的,但要知道你要么局限于开源(我怀疑你的雇主会喜欢),要么必须为少量的私有存储库付费(目前5个私有回购协议7美元)


在我看来,最简单的办法就是在手机或U盘上保存一份git回购协议的副本,将主回购协议添加为遥控器。在您离开家之前,将此回购协议与主回购协议同步。您根本不需要设置服务器;git在文件系统级别工作得很好。

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

假设您在一个分支主机中有一个commit_1。然后,您从不同的计算机save1、save2和save3提交给master,每次更改计算机时都会推拉您的工作。然后是:

git reset --soft <commit_1_hash>
现在,所有保存不会出现在线性历史记录上。另外,通过让分支指向commit_1,您可以只使用分支名称而不是散列值

如果忘记了
--soft
标记,则索引将填充提交文件,而不是工作树,因此您只需使用
add
手动添加文件即可不要使用
--hard
标志运行
重置
,因为您将替换工作树并丢失对save3的任何引用。如果您担心这一点,只需创建一个指向save3的新临时分支,这样,如果在此过程中发生任何事情,您就有了一个备份引用


另外,如果你把事情搞砸了,你可以运行
git reflog
并在那里寻找save3,它应该在那里保存几个月。有关
git reset
命令以及与
git checkout
的相似性和差异的更多信息,请访问,特别是“重置解密”一章。

谢谢。交互式重定基址是我想要的。在1.7中,有一个--autosquash功能可以重定基址。相关:我有一个专用的远程git服务器,这样部件就不会有问题了。但是你把你编写的git repo代码保存在记忆棒上的想法太棒了,我要试试。程序链接似乎断了,我正在修复
502坏网关。谢谢私人回购现在在github上也是免费的!
git commit -m "commit_2"