【问题标题】:Can I checkout branch from local git mirror clone我可以从本地 git mirror clone 结帐分支吗
【发布时间】:2020-10-10 11:37:15
【问题描述】:

我已经使用--mirror 标志克隆了我的仓库,如果可以,我可以从中签出分支吗?如果没有,为什么?

git branch 向我显示所有分支的列表,但 git checkout branch-name 给我错误提示:
fatal: This operation must be run in a work tree

【问题讨论】:

  • 裸仓库没有工作树,它只包含仓库的提交和历史记录,而不是您编辑文件的地方。因此,除非您从原始源或裸存储库进行非裸克隆,否则诸如“签出”之类的操作将不起作用。

标签: git git-mirror


【解决方案1】:

参考官方docs:

--mirror

设置源存储库的镜像。这意味着--bare。与--bare 相比,--mirror 不仅将源的本地分支映射到目标的本地分支,它还映射所有 refs (包括远程跟踪分支、注释等)并设置参考规范 配置使得所有这些引用都被目标存储库中的git remote update 覆盖。

使用--mirror 选项进行克隆时,您会隐式使用--bare 选项,这会创建一个没有工作树的存储库。
--bare 选项主要用于服务器端或特定用例。

在你的情况下,你不应该直接使用你的镜像仓库,因为没有工作树,不适合编辑文件或 git 命令作为git checkout。 你应该git clone your-mirrored-repo(没有--bare/--mirror选项)拥有一个完整的工作树,从镜像仓库开始,你可以在其中使用所有git命令或直接编辑文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 2011-09-03
    • 1970-01-01
    • 2018-03-21
    相关资源
    最近更新 更多