8

This is the process given to create a branch for GitHub Project Pages:

cd /path/to/repo-name
git symbolic-ref HEAD refs/heads/gh-pages
rm .git/index
git clean -fdx
echo "My GitHub Page" > index.html
git add .
git commit -a -m "First pages commit"
git push origin gh-pages

It states that git symbolic-ref HEAD refs/heads/gh-pages will create a new root branch. I'm wondering what the difference between a root branch and a regular branch is.

James Chevalier
  • 10,604
  • 5
  • 48
  • 74

2 Answers2

14

A "root branch" is one without a previous history. *

If you are at master and you do git branch gh-pages, gh-pages will be basedd off master.

Here, the intention is to create a branch for github pages, which is typically not associated with the history of your repo (master and other branches) and hence the usage of git symbolic-ref

Also see here: https://stackoverflow.com/a/8815361/526535

* It is also called an orphan branch and git checkout --orphan will now do the same thing as the git symbolic-ref that was being done before

Also see my answer here: https://stackoverflow.com/a/5690048/526535

Community
  • 1
  • 1
manojlds
  • 290,304
  • 63
  • 469
  • 417
2

The Git 223 (Q3 2019)+ version of that operation would be using git switch:

git switch --orphan gh-pages

What would be the problems if gh-pages branch is based off of master? would it change anything?

Then you would find all tracked files from master in gh-pages: you would have to remove them first before using your new branch

git switch -c gh-pagres master
git rm -r .
git commit -m "empty new branch"

Note that since Sept. 2020, repositories that use GitHub Pages can now build and deploy from any branch.

And since Aug. 2022, GitHub Pages uses Actions by default, using a starter workflow.

VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250