【问题标题】:How to pull a git repository on ubuntu without internet connection?如何在没有互联网连接的情况下在 ubuntu 上提取 git 存储库?
【发布时间】:2014-10-02 08:52:32
【问题描述】:

我想在我们公司的本地网络上使用 Git,因为我的计算机无法访问互联网。我的朋友有互联网连接和一台 ubuntu 机器,他将一些源代码推送到 Git,我需要在没有互联网连接的情况下拉取它们,我也使用 ubuntu 14.04。 另外,我使用以下命令设置了一个存储库:

git init --bare

编辑:两台机器都是ubuntu,很抱歉造成误解。

【问题讨论】:

  • 可能相关:stackoverflow.com/q/11792671 使用 git-bundle 复制 repo。 man page for git-bundlestackoverflow.com/a/3639182 展示了如何在需要时进行同步。
  • @Hasturkun 是否可以在不使用sneakernet 的情况下使用git bundle
  • @sosa:它的主要目的是允许离线传输。你可以例如创建一个捆绑包,将其放在可访问的地方(例如,将捆绑包从外部下载到闪存驱动器)并导入。您需要某种方式将捆绑包送到目的地。如果两台机器在同一个网络中在线,你可以通过 ssh 或 rsync 使用git clone 并跳过这一切。

标签: git ubuntu offline git-pull


【解决方案1】:

请您的朋友为 git 存储库创建一个 Windows 共享。

确保已安装

apt-get install cifs-utils

创建挂载目录

$ mkdir ~/my_friends_repo

使用挂载远程共享

$ sudo mount -t cifs -o username=USERNAME,password=PASSWORD \
      //your_friends_ip_or_computer_name/NAME_OF_SHARE ~/my_friends_repo

现在你可以克隆它

git clone ~/my_friends_repo my_friends_repo_clone

或将其作为另一个远程存储库添加到您现有的存储库中并拉取他的更改

git remote add my_friends_repo ~/my_friends_repo
git pull my_friends_repo master

【讨论】:

【解决方案2】:

除了我的previous answer...

您的朋友可以在他的 windows 机器上使用git daemon 来导出存储库

在 windows 机器上,在 git bash 中执行此操作

git daemon --export-all --reuseaddr --verbose --enable=receive-pack --base-path=PATH_TO_THE_REPOSITORY

在你的 ubuntu 机器上,你可以克隆 repo

git clone git://your_friends_ip_or_computer_name REPO_CLONE_NAME

或将其作为另一个远程存储库添加到您现有的存储库中并拉取他的更改

git remote add my_friends_repo  git://your_friends_ip_or_computer_name
git pull my_friends_repo master


touch git-daemon-export-ok

【讨论】:

    【解决方案3】:

    基础知识

    一个 git 存储库只不过是一个盒子。您可以将代码放入其中(提交),您可以将内容的副本发送到另一个(远程)盒子(推送),您可以从另一个盒子获取内容到您自己的盒子(拉动)。

    如果您的朋友将他的内容推送到 Internet 中的某个框(例如 github),而您无法从主机访问该位置,则此框对您的情况没有帮助。

    你有几个选择:

    • 直接从您的朋友存储库中拉取(他用来推送到 github 的“盒子”。)
    • 请他直接将他的存储库推送到您的主机。
    • 在网络中的某处设置一些存储库。 (在这种情况下,他可以推送到该存储库,然后您可以从中提取。)

    使用中间存储库的解决方案

    由于您使用的是 ssh 自带的 ubuntu,也许最简单的解决方案是在您的机器上设置一个新用户并在那里创建一个裸存储库。然后你有一个地方可以从你的朋友那里拉取,可以使用该用户推送到该存储库。

    你可以这样做:

    sudo useradd -m gituser                     # create user
    sudo -iu gituser git init --bare reponame   # create repository
    sudo passwd gituser                         # set password for user
    

    之后,您的朋友可以使用git push gituser@yourhost/reponame 推送它。并且可以通过git clone gituser@yourhost/reponame获取推送的内容。

    使用 git-daemon 的解决方案

    另一种方法是在您的朋友主机上使用git-daemon 来服务他的存储库。在这种情况下,您可以直接从他的主机中拉取。在 windows 类型上:

    git daemon --base-path=PATH --export-all
    

    其中“PATH”是包含存储库的本地目录。在 ubuntu 上,您可以使用

    访问该存储库
    git clone git://friendshost/reponame
    

    其中“friendshost”是您的朋友主机的主机名,“reponame”是包含存储库的目录的名称。例如,如果存储库位于“C:\some\dir\repo”,则“C:\some\dir”是 PATH,“repo”是 reponame。)

    【讨论】:

      【解决方案4】:

      这取决于您朋友的 git 存储库位于何处。

      您可以在 .gitconfig 文件中指定远程源的位置。 有关详细信息,请参阅此link

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-31
        • 2017-08-25
        • 1970-01-01
        • 2017-09-09
        • 1970-01-01
        • 2015-05-24
        • 1970-01-01
        相关资源
        最近更新 更多