【问题标题】:git branch: gh-pagesgit 分支:gh-pages
【发布时间】:2011-06-12 15:21:00
【问题描述】:

我在 GitHub 上有一个仓库。最近发现了 GitHub 的页面,想用一下。
我想创建这个新分支,然后,当我需要时,可以在master 分支或gh-pages 分支上提交。

我该怎么做?我必须在我的仓库中创建另一个文件夹吗?

【问题讨论】:

  • origin 不是分支,而是远程。你的意思是master
  • 啊,是的,你是对的。我会编辑。
  • 请参阅my related answerwriteup,了解在工作副本的子目录中创建克隆的解决方案。
  • @DanDascalescu 除了您所有的 cmets 之外,为什么不在这里发布自己的答案。你的链接是做什么用的,它链接到这里的问题?

标签: git git-branch github-pages


【解决方案1】:

您可能会发现本教程很有用:

Setup GitHub Pages "gh-pages" branch and "master" branch as subfolders of a parent project folder ("grandmaster").

对我来说,这种方法似乎比每次您想编辑 gh-pages 内容时都执行 git checkout gh-pages 更简单。让我知道你的想法^_^

编辑:我更新了教程链接 - 感谢@Cawas。旧教程(不推荐)是https://gist.github.com/825950

【讨论】:

  • @rubik 实际上最好使用同一作者的第二个建议:gist.github.com/833223
  • GitHub 刚刚启用了使用any branch and directory as the source for the docs。您不再需要使用gh-pages
  • @DanDascalescu 这不是真的。你只能使用 master 分支,或者 master 分支的 docs 文件夹,或者 gh-pages。不是“任何”分支。截至 2020 年 4 月,这些是仅有的 3 种可能性。
【解决方案2】:

我用这个

git push origin `git subtree split --prefix build`:$DEPLOY --force

你可以看到工作版本https://github.com/rofrol/closeyoureyesnow/blob/master/build_and_deploy.sh

【讨论】:

    【解决方案3】:

    像这样发布一个静态网站:

    git subtree push --prefix www origin gh-pages
    

    其中www 是您的静态文件所在的文档根目录。 您的静态网站现在位于: https://[user_name].github.io/[repo_name]/

    【讨论】:

    • 对我不起作用。我得到reset gh-pages branch to master ...\nfatal: Refusing to fetch into current branch refs/heads/gh-pages of non-bare repository\nfatal: the remote end hung up unexpectedly。我用这个git push origin `git subtree split --prefix build`:$DEPLOY --forcegithub.com/rofrol/closeyoureyesnow/blob/master/…
    【解决方案4】:

    您的问题还有另一种解决方案:忘记gh-pages 和分支;将您应该提供的静态文件放在 /docs 目录中,然后转到您的项目设置并告诉 github 提供 /docs 内容。

    欲了解更多信息,请查看this

    【讨论】:

    【解决方案5】:

    典型的方式是切换分支:git checkout master如果你想在master上工作,git checkout gh-pages如果你想在gh-pages上工作。

    从 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 结帐子目录的内容是gh-pages 的内容,请使用https://github.com/X1011/git-directory-deploy 提供的脚本。

    【讨论】:

      【解决方案6】:

      您的 gh-pages 和 master 分支是否具有完全相同的文件夹结构?如果是这种情况,你为什么还要有两个分支?只需维护一个 gh-pages 分支!但是,如果出于某种原因您希望两个分支不断同步,那么最好的选择是使用git rebase。见这里:
      http://lea.verou.me/2011/10/easily-keep-gh-pages-in-sync-with-master/

      您还可以使用 git checkout 的特殊用例仅从 master 中挑选您需要的文件并将它们推送到 gh-pages。见这里:
      http://oli.jp/2011/github-pages-workflow/#gh-pages-workflow
      http://nicolasgallagher.com/git-checkout-specific-files-from-another-branch/

      不得不解决同样的问题后,我发现 gh-pages 通常最终会拥有与 master 不同的代码库。换句话说,gh-pages 应该只包含您项目的 dist/build/publish 文件夹的内容,而 master 将包含您的配置文件、未缩小的脚本和样式等。

      我的建议是将 gh-pages 创建为 --orphan 分支,并且只在其中包含可发布的材料。您必须在不同的本地目录中从 master 克隆,使用 git checkout --orphan gh-pages 创建 gh-pages,然后使用 git rm -rf . 删除所有不必要的文件。在添加仅发布文件后,您可以从那里继续并推送到 gh-pages。 更多信息请参考 Github 文档:
      https://help.github.com/articles/creating-project-pages-manually/

      祝你好运

      【讨论】:

      【解决方案7】:

      手动创建项目页面

      为项目手动添加一组新页面非常简单 如果您习惯使用命令行 git,请处理。

      https://help.github.com/articles/creating-project-pages-manually

      【讨论】:

        【解决方案8】:

        最新版本的 git 可以替代 Chandru 解释的 git symbolic-ref 方法。这避免了必须使用较低级别的命令。

        git checkout --orphan gh-pages
        git rm -rf .
        

        【讨论】:

        • 我不明白。这和symbolic-ref有什么关系?
        • @Cawas 以前,这样做的唯一方法是使用 git symbolic-ref,就像在 Chandru 的回答中一样。现在git checkout --orphan 是正确的方法。
        • 但是,@arrow,当我看到关于两者的文档时,他们似乎根本没有做同样的事情!关于symbolic-ref 它说“现在不推荐使用符号链接,默认使用符号引用”而关于orphan 它说“当你想从一个没有暴露其完整历史的提交”。对我来说,情况正好相反。您正在创建一个完全分离的分支,而不是让一个成为另一个的镜像!
        • @Cawas git symbolic-ref 是每次更新 ref 以指向不同提交时使用的管道命令。这包括每次使用git checkout。不需要手动调用,这就是添加 git checkout --orphan 的原因。
        • @Cawas --orphan 采用起点(如果未指定,则为 HEAD)并从该点创建一个没有历史记录的新分支。我的回答中的额外git rm -rf . 是删除以前的内容,以便在您希望分支完全没有内容的情况下开始。当您在 gh-pages 尚不存在时运行 git symbolic-ref HEAD refs/heads/gh-pages 时,它会将 repo 置于类似于在第一次提交之前 git init 之后的状态,因此以下提交将没有父级。 --orphan 是为 symbolic-ref 的特定用例添加的,但不是为了替代其他用途。
        【解决方案9】:

        在你的本地克隆上做,

        git symbolic-ref HEAD refs/heads/gh-pages
        rm .git/index 
        git clean -fdx
        

        然后,git checkout gh-pages 并编写您的页面。 git push origin gh-pages 当您准备好发布页面时。

        【讨论】:

        • 是的,但是我应该把我的页面放在哪里? git 是如何知道 gh-pages 中要放入哪些页面的?
        • git checkout gh-pages 表示您已切换到名为“gh-pages”的分支。您提交给此分支的任何更改都会被 github 拾取以构建您的 github 页面。要切换回“主”分支(可能是您的源代码),请执行git checkout master
        • GitHub 刚刚启用了使用any branch and directory as the source for the docs。您不再需要使用gh-pages
        猜你喜欢
        • 2019-09-16
        • 2017-11-04
        • 2015-12-13
        • 2014-12-16
        • 2021-08-01
        • 2018-02-02
        • 1970-01-01
        • 2013-09-01
        • 2015-06-27
        相关资源
        最近更新 更多