【问题标题】:Git: Pull everything from bare usb remoteGit:从裸 USB 遥控器中提取所有内容
【发布时间】:2023-04-03 13:36:01
【问题描述】:

我尝试将 USB-hdd 设置为我所有本地存储库的移动版本。我使用的所有东西都不在线,现在还没有共享。所以唯一的合作者是我。 所以目标是保存我的整个进度并从其他机器上的 USB 克隆它。重要的部分是,所有标签,尤其是分支都被推、拉。而且我真的不想手动为每个分支做点什么。 到目前为止,我使用

克隆了我的存储库
$ cd /Volumes/usb
$ git clone --mirror /path/to/working/repo

现在我想从那个裸露的(据我所知镜像暗示裸露的)repo 中提取所有内容。 所以我去另一台机器/文件夹做一个

$ git clone file:///Volumes/usb/repo.git

主分支被克隆到本地,我得到一个工作目录。然而,所有其他分支都只是在远程(裸 USB 存储库)上并且不会被拉动。 如果我使用git branch -r,我可以在遥控器上看到所有这些,但拉动没有任何作用。

$ git br -a
* devel
  remotes/origin/HEAD -> origin/devel
  remotes/origin/devel
  remotes/origin/master

$ git pull origin master
From /test/repo
* branch            master     -> FETCH_HEAD
Already up-to-date.
$ git br -a
* devel
  remotes/origin/HEAD -> origin/devel
  remotes/origin/devel
  remotes/origin/master

没有任何改变,也没有设置本地分支。重点甚至是将所有远程分支设置为本地分支。我真的很想从我离开的地方开始。

【问题讨论】:

    标签: git


    【解决方案1】:

    然而,所有其他分支都只是在远程(裸 USB 存储库)上,不会被拉动

    他们被拉了。
    您会看到它们,不是在“远程”上,而是在命名空间源的本地存储库中。

    如果你真的想将那些远程跟踪分支作为分支,请参阅我在“git pull all branches from remote repository”处使用的onle-liner

    $ remote=origin ; for brname in `git branch -r | grep $remote | grep -v master | grep -v HEAD | awk '{gsub(/[^\/]+\//,"",$1); print $1}'`; do git branch -t $brname $remote/$brname ; done 
    

    一旦所有本地分支都在跟踪远程跟踪分支,您仍然必须使用script if you were to pull all branches

    【讨论】:

    • 如此处所述:stackoverflow.com/questions/67699/… 没有原生方式。如果有人为这种情况找到更好的工作流程,请回答我。到目前为止,脚本方式就像建议的那样有效。
    猜你喜欢
    • 2013-02-23
    • 1970-01-01
    • 2013-07-05
    • 2014-10-28
    • 2010-12-07
    • 2012-06-01
    • 2017-08-18
    • 1970-01-01
    • 2018-06-25
    相关资源
    最近更新 更多