Using GitHub for Lecture Notes
Flatiron School has a great system for sharing lecture notes: a dedicated GitHub repo. I forked the repo during week one, thinking I’d pull down the files to my local, take notes on the notes (Inception-style meta-noting), then push back up to my forked repo. No sweat.
But then comes the scary part for us git-n00bs - getting updates. I felt real comfortable pushing to / pulling from my own repositories. But to get the next days’ lecture material, I was gonna have to add my instructor’s repo as a remote. Yikes. Now that’s a scary connection to make. Any mistakes, and I’m screwing up the lecture docs for Avi, who might have to redo them, and my classmates, who need this material asap for labs + projects. I needed to handle this delicate operation with extreme care.
As I now do in all these types of situations, I went straight to GitHub help docs. Here’s the solution, specific to our Flatiron repo.
1) Open Terminal and
cd to whatever folder you want to use for lecture notes storage.
2) Check the current remote repo(s) for your fork using
git remote -v. You should probably see something like the below.
$ git remote -v origin firstname.lastname@example.org:ktravers/ruby-007-lectures-and-videos.git (fetch) origin email@example.com:ktravers/ruby-007-lectures-and-videos.git (push)
3) Time to make add Avi’s source repo as a new remote upstream repository. We do this using the command
git remote add [name you choose for upstream repo] [SSH clone url for upstream repo]. You can call this remote whatever you want, but “upstream” is the usual convention.
$ git remote add upstream firstname.lastname@example.org:flatiron-school-ironboard/ruby-007-lectures-and-videos.git
4) That’s it! Now just verify the new upstream repo is there by keying in
git remote -v again. You should now see something like this:
$ git remote -v origin email@example.com:ktravers/ruby-007-lectures-and-videos.git (fetch) origin firstname.lastname@example.org:ktravers/ruby-007-lectures-and-videos.git (push) upstream email@example.com:flatiron-school-ironboard/ruby-007-lectures-and-videos.git (fetch) upstream firstname.lastname@example.org:flatiron-school-ironboard/ruby-007-lectures-and-videos.git (push)
Ok, we’ve got our upstream repo configured. Now to get the notes.
1) First be sure to add and commit any local changes using
git add . then
git commit -m "message". If you push your commit, BE SURE TO PUSH TO ORIGIN using
git push origin [branch]. DO NOT PUSH TO UPSTREAM. If you push to upstream, it’s all over, pal.
2) Pull down new lecture material using
git pull upstream [branch]. You’ll see something like the dialogue below, noting updates and merges. Note: you might need to manually merge any changes that couldn’t be auto-merged.
$ git pull upstream master remote: Counting objects: 31, done. remote: Compressing objects: 100% (25/25), done. remote: Total 31 (delta 1), reused 30 (delta 0), pack-reused 0 Unpacking objects: 100% (31/31), done. From github.com:flatiron-school-ironboard/ruby-007-lectures-and-videos * branch master -> FETCH_HEAD 866f9f5..ccea185 master -> upstream/master Merge made by the 'recursive' strategy. rails-lecture-2/blogappwithforms/Gemfile | 42 +++++++++++++ rails-lecture-2/blogappwithforms/README.rdoc | 28 +++++++++ rails-lecture-2/blogappwithforms/Rakefile | 6 ++
That’s it! Now you’ve got an easy-to-maintain local directory for all your lecture materials. Easy to
subl . into for review whenever needed. Victory dance.
- Add remote notes repo:
git remote add upstream [SSH clone url for upstream repo]
- Pull down new notes:
git pull upstream master