代码之家  ›  专栏  ›  技术社区  ›  smaug

从本地还原远程存储库上的所有Git分支

  •  0
  • smaug  · 技术社区  · 6 年前

    我有一个本地Git存储库,其中包含从项目开始就有的代码。但是远程存储库被完全删除(所有分支和提交历史记录都消失了)。

    有没有办法恢复远程存储库上的所有分支(和提交历史记录)?

    1 回复  |  直到 6 年前
        1
  •  1
  •   torek    6 年前

    git init --bare

    git remote add new-server ssh://user@host/path/to/repo.git
    

    git push --tags new-server 'refs/remotes/origin/**:refs/heads/*'
    

    origin new-server --tags

    origin/whatever

    git for-each-ref --format='%(refname)' refs/remotes/origin |
        while read rref; do
            lref=${rref#refs/remotes/origin/} # strip the boilerplate
            [ "$lref" = HEAD ] && continue # skip origin/HEAD
            git branch $lref $rref ||
                echo "WARNING: did not create $lref, make sure that's OK"
        done
    

    master

    cd server/path/to
    git clone --mirror --bare ssh://user@host/client/path/to/repo.git
    

    repo.git server/path/to

    cd repo.git
    git remote remove origin