I am not sure how long Github has offered their Pages service, but I only recently discovered it. And, as I have been trying to improve my workflow, I found the idea of deploying my site with a simple “
git push” very enticing.
I experimented briefly with Pages and decided to go with Github for my webpage hosting. However, I quickly realized I had a problem. I had an existing Github repo that housed the code for bencarson.net. I also had a Github repo in ben-carson.github.io that I had created for my Pages experimentation. I didn’t want to lose the history of my original website project. And I also didn’t really want to just copy-and-paste my original site’s files over my Pages repo, that just felt too inelegant. What I really wanted was to combine these two distinct git projects and their histories into one project.
My Git-fu is still pretty weak, so I took to the web for help. My initial searches provided results on merging subtrees and modules and whatnot. More along the lines of keeping a library that a project uses up-to-date, rather than a one-time project meld. Way overkill for my needs. Then I found this post. It was close to exactly what I was looking for.
For the sake of clarity, I’ll include just the (DOS) commands I ran for this process:
C:\> mkdir bencarson-website
C:\> cd bencarson-website
C:\bencarson-website> git init
Initialized empty Git repository in c:/dev/workspace/blog-post/.git/
C:\bencarson-website> dir > deleteme.txt
C:\bencarson-website> git add .
C:\bencarson-website> git commit -m “Initial commit”
C:\bencarson-website> git remote add bc-gh-io-remote https://firstname.lastname@example.org/ben-carson/ben-carson.github.io.git
C:\bencarson-website> get fetch bc-gh-io-remote
warning: no common commits
remote: Counting objects: 73, done.
remote: Compressing objects: 100% (55/55), done.
remote: Total 73 (delta 11), reused 69 (delta 10)
Unpacking objects: 100% (73/73), done.
* [new branch] master -> bc-gh-io-remote/master
C:\bencarson-website> git merge bc-gh-io-remote/master
C:\bencarson-website> git rm deleteme.txt
C:\bencarson-website> git commit -m “removing garbage file”
[master 05b4839] removing garbage file
1 file changed, 10 deletions(-)
delete mode 100644 deleteme.txt
#combine the ‘remote add’ and ‘fetch’ commands with the ‘-f’ parameter
C:\bencarson-website> git remote add -f bc-net-remote https://email@example.com/ben-carson/bencarson.net.git
* [new branch] master -> bc-net-remote/master
C:\bencarson-website> git merge bc-net-remote/master
C:\bencarson-website> git remote remove bc-net-remote
C:\bencarson-website> git remote rename bc-gh-io-remote origin
C:\bencarson-website> git push origin master
After this, my new, history-merged, site was pushed up to
ben-carson.github.io and is available[Edit 03.10.15: removed all my github stuff]! Super easy, once you know how to do it.