Bol*_*wyn 580 git version-control git-clone git-bare git-non-bare-repository
如何将"普通"Git存储库转换为裸存储库?
主要区别似乎是:
在普通的git存储库中,您.git在存储库中有一个包含所有相关数据的文件夹,而所有其他文件都构建了您的工作副本
在一个简单的Git存储库中,没有工作副本,文件夹(让我们称之为repo.git)包含实际的存储库数据
Jör*_*tag 580
总之:更换的内容repo一致的内容repo/.git,然后告诉它现在是一个纯仓库存储库.
为此,请执行以下命令:
cd repo
mv .git ../repo.git # renaming just for clarity
cd ..
rm -fr repo
cd repo.git
git config --bool core.bare true
Run Code Online (Sandbox Code Playgroud)
请注意,这与执行git clone --bare新位置不同(参见下文).
jon*_*scb 240
你的方法看起来会起作用; 裸存储库的文件结构就是.git目录中的内容.但我不知道是否有任何文件实际更改,所以如果失败,你可以这样做
git clone --bare /path/to/repo
Run Code Online (Sandbox Code Playgroud)
您可能需要在不同的目录中执行此操作以避免名称冲突,然后您可以将其移回到您想要的位置.您可能需要更改配置文件以指向您的原始仓库所在的位置.
xhh*_*xhh 114
我认为以下链接会有所帮助
$ mv repo/.git repo.git
$ git --git-dir=repo.git config core.bare true
$ rm -rf repo
Run Code Online (Sandbox Code Playgroud)
Chi*_*aye 70
除非你特别想要或需要在文件系统上旋转位,否则创建一个非裸存储库的裸版本确实很简单(在这里的其他几篇文章中提到).它是git核心功能的一部分:
git clone --bare existing_repo_path bare_repo_path
Jac*_*zyk 14
还请考虑使用
git clone --mirror path_to_source_repository
Run Code Online (Sandbox Code Playgroud)
从文档:
设置源存储库的镜像.这意味着 - 不好.与--bare相比, - mirror不仅将源的本地分支映射到目标的本地分支,它还映射所有引用(包括远程跟踪分支,注释等)并设置refspec配置,以便所有这些引用被目标存储库中的git远程更新覆盖.
我只是想推送到网络路径上的存储库,但git不会让我这样做,除非该存储库被标记为裸.我只需要更改其配置:
git config --bool core.bare true
Run Code Online (Sandbox Code Playgroud)
除非你想保持文件清洁,否则无需摆弄文件.
我已经阅读了答案,我已经这样做了:
cd repos
mv .git repos.git
cd repos.git
git config --bool core.bare true # from another answer
cd ../
mv repos.git ../
cd ../
rm -rf repos/ # or delete using a file manager if you like
Run Code Online (Sandbox Code Playgroud)
这将留下repos/.git裸露的内容repos.git
| 归档时间: |
|
| 查看次数: |
207581 次 |
| 最近记录: |