1

我创建了一个新的空 gitolite 存储库,我想将原始 git 存储库的快照(在我的工作站上)推送到其中。我按照说明进行操作,git push --all然后git push --tags。这似乎工作得很好,但我发现一些分支引用没有被推送。在我的工作站上运行git show-ref会显示许多类似的 refs refs/remotes/origin/branchXyz,但git show-ref直接在 gitolite repo 上执行根本不会显示此分支名称(我希望看到它显示为refs/heads/branchXyz。如何推送剩余的分支?

谢谢!

4

1 回答 1

2

如果您的本地存储库本身是一个克隆(' origin',另一个非 gitolite 存储库),它没有本地所有分支,仅引用远程 (' origin') 分支。

您应该首先拉出所有分支或全部跟踪它们

$ git remote update  
$ git pull --all

# or:

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

(最后一条命令在这里详述

(这两个选项在“将所有远程 git 分支跟踪为本地分支”和“可以“<code>git pull --all”更新我的所有本地分支吗? ”或“我如何使用 Git 克隆所有远程分支”中也详细说明了这两个选项? ")

然后push --all到你的新(gitolite)上游仓库。

于 2012-06-01T15:06:59.993 回答