【问题标题】:git: put a branch in a subdirectorygit:在子目录中放置一个分支
【发布时间】:2010-03-05 12:31:54
【问题描述】:

我有一个 git 存储库(位于 github.com),它有两个分支:master 和 gh-pages。我想把 gh-pages 分支放在一个子目录下,这样就不用每次都切换分支了。

repo/
    (content of the master branch)
    gh-pages/
            (content of the gh-pages branch)

这可能吗?

【问题讨论】:

标签: git github branch


【解决方案1】:

您可能正在寻找subtree merging option

它会让你将一个不相关的分支检出到另一个分支的子目录中,然后在它们之间来回合并。但是,在推送在 GitHub 上上线之前,您仍然需要检查 gh-pages 并合并来自主存储库的更改。

如果更适合您,您还可以将 gh-pages 作为主分支的子模块签出。

【讨论】:

  • FWIW,这是应该被接受为正确答案的答案。
  • 你的最后一行很有意义。感谢您的精彩提示!
【解决方案2】:

事情不是这样设计的。您可以理论上将存储库克隆到原始克隆的子目录中,并将该目录标记为从更高级别的存储库中排除,但是在完全不同的目录中检查它不是更简单而不是子目录?

也就是说……

/repo/master/(clone on master branch)

然后是另一个分支上的另一个克隆

/repo/gh-pages/(clone on gh-pages branch)

【讨论】:

    【解决方案3】:

    从 git 2.5 开始,您可以同时签出两个分支在不同的目录中。见https://github.com/blog/2042-git-2-5-including-multiple-worktrees-and-triangular-workflows。通过git worktree add -b gh-pages ../gh-pages origin/gh-pages设置。

    如果您想将 master 结帐的子目录的内容放入 github 上的 gh-pages,请使用 https://github.com/X1011/git-directory-deploy 提供的脚本。

    【讨论】:

    【解决方案4】:

    通常使用版本控制将多个项目组合到一个存储库中并不是一个好主意。例如,如果有人想分叉你的存储库,但不想在 GitHub 上托管他们的副本怎么办?那么gh-pages 目录对他们来说就完全没用了。即使他们确实在 GitHub 上托管了自己的目录,gh-pages 目录很可能仍然与他们无关。

    我意识到 GitHub 这样做的方式在某种程度上违背了这个建议(毕竟,即使它们在不同的分支上,它们仍然在同一个 repo 中)。但是,在这种情况下,分支完全不相关(它们不共享任何历史记录),因此从实际角度来看,它们就像 位于不同的存储库中一样。如果有人克隆了您的 repo 并且不想要 gh-pages 分支,他们可以将其删除,它将对 master 产生影响。

    【讨论】:

      【解决方案5】:

      我尝试了git subtree 技巧,但它要求master 将所有gh-pages 内容提交给它,这在这种情况下并不理想。更好更简单的是

      1. ./repo/gh-pages/ 创建一个新目录
      2. 为此在.gitignore 上写一行 (gh-pages)
      3. cd gh-pages/git initgit checkout -b gh-pages,在那里创建一个独立的 git 远程

      你也可以git clone 直接到./gh-pages/ 只用你想要的分支。

      【讨论】:

        【解决方案6】:

        git 中的分支是指向提交(即移动)的指针,因此不可能将分支作为子目录。

        公平地说,git co gh-pages 并不比cd ../gh-pages 难多少

        【讨论】:

        • 这不是更难,而是同时拥有两者。拥有一个与 master 完全不相交的 gh-pages 分支是完全合理的,并且让它们并排移动文件非常方便。
        猜你喜欢
        • 1970-01-01
        • 2021-08-09
        • 1970-01-01
        • 1970-01-01
        • 2021-06-28
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        • 1970-01-01
        相关资源
        最近更新 更多