17

我正在编写一个工具来将我的所有存储库从Bitbucket(支持 Git 和 Mercurial)备份到我的本地机器。

它已经适用于 Mercurial,我这样做是这样的:

  • 在本地机器上创建一个没有工作副本的新空存储库
    (与bareGit 存储库相同)
  • 从远程仓库拉取到本地空仓库

现在我正在尝试对 Git 做同样的事情。

已经发现我不能直接pull访问一个裸存储库,而应该使用它fetch

所以我试了一下:

C:\test>git fetch https://github.com/SamSaffron/dapper-dot-net.git
remote: Counting objects: 1255, done.
remote: Compressing objects: 100% (1178/1178), done.
remote: Total 1255 (delta 593), reused 717 (delta 56)
Receiving objects: 100% (1255/1255), 13.66 MiB | 706 KiB/s, done.
Resolving deltas: 100% (593/593), done.
From https://github.com/SamSaffron/dapper-dot-net
 * branch            HEAD       -> FETCH_HEAD

显然 Git确实获取了一些东西,但之后本地存储库是空的。
git logfatal: bad default revision 'HEAD'

我究竟做错了什么?

免责声明:
我只有非常非常基本的 Git 知识(我通常使用 Mercurial)。
如果这很重要,我正在使用 Windows。

4

4 回答 4

20

尝试

git fetch https://github.com/SamSaffron/dapper-dot-net.git master:master
于 2011-10-25T21:01:17.367 回答
13

要将远程存储库备份到您的裸存储库中,请先定期配置

git config remote.origin.url https://github.com/SamSaffron/dapper-dot-net.git
git config remote.origin.fetch "+*:*"

然后简单地运行

git fetch --prune

备份。

  • 您可能可以跳过第一个配置添加,因为这应该在克隆远程存储库时已经设置。
  • 还请注意上述命令中的双引号 ( ") 以保护 asterix ( *) 不被您的 shell 解释。
  • 需要加号以允许非快进更新。如果您想备份遥控器的当前状态,这可能是您的意图。
  • 选项--prune还用于删除现在不存在的分支。
于 2015-11-01T11:09:30.690 回答
4

我想你如果你真的想备份。你可以试试$ git clone --mirror XXXX命令。它将从存储库中获取几乎所有内容。希望它是有帮助的。

于 2011-10-26T03:00:01.637 回答
1
$ git fetch https://github.com/SamSaffron/dapper-dot-net.git +refs/heads/*:refs/heads/* --prune
于 2014-10-03T03:36:41.307 回答