Git - 本地协议



Git 本地协议是 Git 用于在位于同一文件系统上的不同仓库之间传输数据的方法之一。

此协议涉及通过本地文件路径而不是通过网络在同一主机上的不同目录中查找远程仓库。

工作原理?

如果您有共享挂载的文件系统,则可以克隆、推送到和从基于本地文件的仓库中拉取。

使用仓库的路径作为 URL 来克隆仓库或将其作为远程仓库添加到现有项目。

Git 使用本地协议直接通过文件系统传输文件和引用。

1. 例如,运行类似于以下命令以将本地仓库克隆到另一个目录

git clone /path/to/repository /path/to/destination

2. 从本地仓库拉取:从本地仓库拉取或获取也使用本地协议。

git remote add origin /path/to/repository

3. 推送到本地仓库:使用本地协议将文件路径指定为远程仓库来推送到本地仓库。

git push /path/to/repository branch_name

当 Git URL 以file://开头时,它会修改操作的处理方式。

  • 在没有file://的情况下,Git 使用直接文件复制或硬链接来优化操作。

  • 提供file://时,Git 使用效率较低的网络传输过程。

  • 当需要干净的仓库副本,没有任何不必要的引用或对象时(例如,从另一个版本控制系统迁移后),通常使用file://

  • 在大多数情况下,使用常规路径(无file://)更快且足够。

git clone file:///srv/git/project.git

使用以下命令将本地仓库添加到现有 Git 项目。

git remote add local_proj /path/to/repository

添加后,可以像访问网络远程仓库一样,向新添加的远程仓库 (local_proj) 推送和拉取。

优势

  • 基于文件的仓库利用现有的网络访问和文件权限,使其易于设置。

  • Git 本地协议快速高效,因为没有网络开销。

  • 这是在同一系统上放置多个仓库的理想设置。

  • 克隆更快并节省磁盘空间,因为 Git 可能会使用硬链接来避免复制对象文件。

  • 使用此配置,可以快速轻松地从同事的工作仓库中检索工作,而无需将其推送到远程服务器然后再从中检索。

局限性

  • 与基于网络的访问相比,可访问性可能更复杂,因为仓库位于同一台机器上或可通过共享文件系统访问,例如网络挂载的驱动器。

  • 共享文件系统的功能决定了访问速度,这可能会导致性能下降。

  • 因为 NFS 仓库可能比同一服务器上可通过 SSH 访问的仓库慢,所以 Git 能够有效地利用本地驱动器。

  • 基于文件的仓库也没有针对意外损坏的内置保护。

  • 如果用户无意中更改或删除重要的 Git 文件,则拥有远程目录的 shell 访问权限的用户有损坏仓库的风险。

  • 这并非最佳选择,因为每个仓库实例都位于同一系统上。

  • 由于集中化,增加了数据灾难性丢失的可能性。

Git 本地协议无法保护仓库免受损坏,因为每个用户都拥有该目录的完整 shell 访问权限,并且任何人都可以在任何时间点更改它。
广告