【问题标题】:One Git repository, two working trees一个 Git 存储库,两个工作树
【发布时间】:2012-11-09 17:01:07
【问题描述】:

是否可以在同一个本地存储库(== 共享 .git 目录)上有两个工作树(两个不同的分支)?

【问题讨论】:

    标签: git msysgit


    【解决方案1】:

    alternates 可能有助于在多个 .git/-目录之间共享一个对象存储。在以下位置检查“对象/信息/替代”:

    http://www.kernel.org/pub/software/scm/git/docs/gitrepository-layout.html

    【讨论】:

    【解决方案2】:

    是的。但是您需要将第二个分支 workdir 放在第二个目录中,并手动管理交换。

    见Git man page:

    --work-tree=<path>
    Set the path to the working tree. It can be an absolute path or a path relative
    to the current working directory. This can also be controlled by setting the 
    GIT_WORK_TREE environment variable and the core.worktree configuration variable 
    (see core.worktree in git-config(1) for a more detailed discussion).
    

    这使您可以根据需要签出到任意数量的工作树/目录,并根据您声称已经签出的任何分支以任何顺序重新签入。

    但是,如果您犯了一些错误,请不要感到惊讶。有点像拿着剪刀跑。

    【讨论】:

    • 所以存储库引用了工作树。工作树是否可以引用其共享存储库?
    • 我的描述是针对两个工作目录和一个 .git 存储库。可以指示 git 在一系列位置而不是默认位置查找其组件(再次参见 git 手册页;-)。但是,Git 在每个命令中都会与您提供的路径和默认值一对一地工作。如果同事需要工作,那么他们应该有自己的克隆。 WORK_DIR 的一个可能用例是一个测试或参考构建,运行速度较慢,从您的快速手指移到一侧;-)
    【解决方案3】:

    不,你必须制作两个克隆。

    【讨论】:

    • 是否有某种“轻量级”克隆?
    • @MikeL.:同一文件系统上的 repos 克隆将尽可能使用指向 Git 对象文件的硬链接以节省空间。
    • @MikeL.:在这种情况下,不,它不会是轻量级的。
    猜你喜欢
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    相关资源
    最近更新 更多