如果我需要从工作场所或其他地方访问家用电脑上的文件,我需要拥有网络服务器并在那里签入文件吗?
如果我正在使用git
,我是否仍然需要拥有服务器或者实际上是将文件保存在他们的服务器上?
如果我需要从工作场所或其他地方访问家用电脑上的文件,我需要拥有网络服务器并在那里签入文件吗?
如果我正在使用git
,我是否仍然需要拥有服务器或者实际上是将文件保存在他们的服务器上?
首先,Git是一种分布式版本控制系统。这意味着在使用Git时,您在工作场所拥有完整的代码库,并且在家中计算机上也有完整的副本(称为克隆)。您可以在家中计算机上工作,提交更改,阅读提交消息,查看差异,切换分支等,无需不断访问工作计算机。
您的问题是如何在工作和家里同步代码库。有很多可能性:
您可以在可移动存储介质上创建裸仓库(即没有工作目录),例如USB磁盘(闪存驱动器)上的代码仓库克隆。您可以通过这个仓库进行同步,从一个地方推送到它,在另一个地方拉取(fetch/pull)它。
您可以使用Git托管服务,例如提到的GitHub,并使用它来同步您的代码库。但请记住,通常免费计划需要将您的代码库公开;如果要拥有私人代码库,则必须使用付费计划(付费服务)。请检查您想使用的网站提供什么。
您可以使用git-bundle命令:在一侧使用“git bundle”命令生成捆绑包,然后在另一侧使用捆绑包文件而不是代码库URL进行克隆/拉取。例如:git fetch file.bndl
。您可以以任何方式传输捆绑包,可以通过USB闪存驱动器传输,通过HTTP下载它(纯网页服务器就足够了),也可以通过FTP或SCP。
你可以通过SSH提供你的存储库。为此,你需要在工作和家用电脑上都安装git,在服务器上安装ssh守护程序(你要从哪一边获取/推送),以及客户端上的ssh客户端。Git不需要在服务器上全局安装所有用户; 你可以通过相关选项告诉git在哪里找到适当的git二进制文件(请参阅git文档)。在Git Wiki的技巧页面中,你会找到“如何通过ssh将主机推/拉到网关后面?”提示。
最后,你可以通过HTTP提供你的存储库,使用简单的Web服务器,就像发布网页一样。你需要记住运行git update-server-info
来生成帮助信息。通常这是从post-update
挂钩(如果存储库是非裸体的,即如果你在其中创建提交,则为post-commit
)完成的; 查看示例挂钩并阅读githooks文档,以了解如何完成这个操作。
另请参见我在如何使我的本地Git存储库可用于git-pull?中的回答 SO问题。
GIT是分布式版本控制系统,每个系统上都有完整的代码库副本。这使您可以采用适合自己的同步代码库的工作流程。鉴于您在问题中提到的情况,我建议选择以下两种方案之一。
如果您的家用计算机和工作计算机都可以从互联网访问,则可以直接从其中一个计算机的ssh连接到另一个计算机,并将更改推送到每个本地代码库。
此方法涉及将工作和家庭代码库的更改与第三个代码库位置同步,该位置可以是托管服务(如Unfuddle或GitHub),也可以是任何提供ssh访问权限的Web托管服务。
我更喜欢第二种方法,因为它在另一个离线位置提供了第三个代码库的副本。
Git类似于subversion/sourcesafe,但它的设计是分布式的。你可以将其作为集中式服务器来使用,也可以在同事之间进行工作。你可以使用一些其他模型,有关更多信息请参阅mmc的链接。
GitHub可以在Web上使用,但我猜您需要在工作中托管某个东西并且不对外开放。
尽管中央服务器可能会使事情变得更加容易,但您并不需要它。
在工作中,我使用一些围绕着git-bundle
的脚本,在无法相互访问的机器之间同步我的git存储库。为了移动这些捆绑包,我使用电子邮件或USB闪存驱动器。 (涉及的机器甚至无法通过IP连接访问共同的第三台机器)。