【发布时间】:2014-08-05 23:02:45
【问题描述】:
我正在将 git 存储库从 Github 迁移到本地 Atlassian Stash 服务器。虽然我正在开发基础设施,但开发人员仍在与 Github 合作,我的目的是将他们的工作从 Github 镜像到 Stash,直到我使用 Stash。
无论如何,我将我的本地镜像设置如下:
git clone --mirror https://github.com/myorg/myrepo.git myrepo-mirror
cd myrepo-mirror
git remote set-url --push origin nowhere.com # prevent accidental pushes to origin
git remote add stash https://stash/myproj/myrepo.git # set "stash" remote for pushing
然后我会定期(通过 cron)获取和推送:
git fetch -p origin
git push --mirror stash
但是,它在git fetch 处失败。我收到以下错误:
致命:refs/remotes/origin/master 同时跟踪 refs/heads/master 和 refs/remotes/origin/master 命令流意外结束
我运行git branch -r,它看起来很正常。所以我运行git ls-remote origin,我看到了通常情况,底部有这两个奇怪的(我认为):
7e438ee97be8c7cbd8012c3c96b60e3ff8cb3c2c refs/remotes/origin/HEAD
7e438ee97be8c7cbd8012c3c96b60e3ff8cb3c2c refs/remotes/origin/master
我认为最后一个是问题,但我不确定,或者如何解决它。我还跑了git config --get-all remote.origin.fetch 看看:
+refs/pull/*/head:refs/remotes/origin/pr/*
+refs/heads/*:refs/remotes/origin/*
+refs/*:refs/*
但同样,我不确定是否或如何解决。
全面披露
我早些时候尝试镜像似乎工作正常,但我在测试时不小心git push --mirror 使用过时的工作副本强制推送源(是的,我知道)。我尝试通过访问我最近获取的 CI 服务器并重新创建所有分支来进行重建,然后将镜像推送回 github 以使一切恢复正常。这可能就是这些奇怪的 ref 问题开始的地方。
一边
我也尝试了git clone --bare url,然后又尝试了git fetch -p origin && git push --mirror stash,它说它正在工作,但我从未在我的 Stash 存储库中看到更新的提交。
【问题讨论】:
-
你看过
.git/config吗?也许你可以在那里改变一些东西并看到错误?如果没有,你也可以看看.git/refs/*。删除那里的内容时要小心。
标签: git version-control mirror