Version control with Git and GitHub

 Initial tasks:

  1. Please sit near the front (saves my voice and you'll hear better)
  2. Log in to a PC
  3. Open this slideshow at https://slides.com/gcapes/git
    • The course notes are linked from this slideshow
  4. Sign up for a GitHub account

 

Note there is no sign-in sheet. Attendance is recorded using feedback form.

Gerard Capes, Research IT

Research-related IT Services

Described on IT Services website.

Announcements given via Research IT blog.

  • Training courses teaching computing skills for Research
  • General guidance and advice about research software
  • Access to specialist support and consultancy e.g. code reviews
  • Access to HPC systems
  • Data storage and management
  • Full list of services on offer

For help and support use the Support Centre

Housekeeping

  • Fire exit
  • Toilets
  • Course timing
    • 09:30 -- 12:00
    • 12:00 -- 13:00 lunch
    • 13:00 -- 16:00 

Teaching methods

  • Interactive workshop-style course
    • Type along with the examples
    • Test your understanding in the exercise sessions
  • Course notes
    • All examples and exercises are in the notes
    • Slides will remain online after the course

Getting help

  • Sticky notes
    • Used for getting help and giving real-time feedback
    • Green = OK / ready to go
    • Red = not OK (too fast, didn't understand, computer says no etc)
  • Please interrupt me to ask questions
  • Peer learning
    • During exercises, please help each other as required
    • Please try to be quiet during worked examples so everyone can hear

What is a version control system?

  • Version control is a piece of software which allows you to record and preserve the history of changes made to directories and files.
  • If you mess things up, you can retrieve an earlier version of your project.

Have you been here before?

  • Save a copy elsewhere?
  • Save with a different name?
  • How do you name different versions?
  • What's different between them?
  • Many copies of nearly-identical but critically different files

Storing versions without VCS

Why use version control?

To store versions properly

  • VCS treats files as one project - one current version on disk, previous versions and variations saved in the repository
  • VCS starts with a base version of the project, and only saves the subsequent changes you make
  • In order to save a new revision, a commit message is required, which explains why the changes were made

Changes are saved sequentially

Different versions can be saved

Multiple versions can be merged

  • Restore previous versions
  • Understand what happened
  • Backup
  • Collaboration

Why use version control?

  • Example scenario
  • Text files vs binary files
  • Git vs GitHub

Before we get started

Open the notes

Understanding the commands

The staging area

Checking out a previous commit:

"detached HEAD"

Branches

Revert: create a new commit

Reset: delete commit(s)

Exercises on remote collaboration

3 exercises at the bottom of this page:

http://gcapes.github.io/git-course/09-remote-collaboration

Feedback form = attendance

Link to feedback form

Rebasing

Merge vs rebase

Standard merge

Rebase onto master

(FF) Merge after rebase

Forks and Pull Requests

Made with Slides.com