我如何将一个非裸git存储库变成一个裸存储库?

时间:2010-05-27 17:56:39

标签: git

  

可能重复:
  How to convert a git repository from normal to bare ?

我想把一个回购变成一个简单的回购,这样人们就可以用很大的恶意警告来推动它。我可以删除它并再次克隆它......但也许有更优雅的方式?

2 个答案:

答案 0 :(得分:11)

最好再次删除和克隆。例如:

mv old_git_repo/ /tmp/
git clone --bare /tmp/old_git_repo/  new_git_repo/

您也可以删除工作文件并将.git/*提升为.。但是,您还需要在新的bare = true logallrefupdates = true部分config部分(以前为[core])中添加.git/config并删除git -> git。脚本如果你愿意,自动执行此操作。

编辑:您在评论中提到这是从svn克隆的,因此新克隆需要很长时间。但是 - 不要从svn克隆!只需从新的git repo中克隆,它将是{{1}},这将是快速的。或者,请参阅上面关于移动文件的说明。

答案 1 :(得分:1)

裸存储库只是一个没有工作目录的.git目录。所以你可以简单地用.git的内容替换项目目录,它应该可以工作:

mv /path/to/projectdir /path/to/projectdir.old
mv /path/to/projectdir.old/.git /path/to/projectdir
rm -rf /path/to/projectdir