Workshops/Git Workshop

From London Hackspace Wiki
Jump to navigation Jump to search

This workshop will teach you about Git, the fast version control system. You'll learn how manage files for your own software projects, and how to collaborate with others'.

Discussion on the mailing list.

When

The workshop is running on the following dates:

  • Wednesday 23 February, 7pm - 10pm
  • Friday 18 March, 7pm - 10pm

Doodle poll for these and future dates.

Prerequisites

We will be starting from scratch, assuming no prior knowledge about Git or any other version control system.

You will need to bring a computer to work on during the workshop.

It would be helpful if you could have Git already installed before you come to the workshop, so that we can get straight into it:

Git download links and installation help

Programme (draft)

Guided tour

We'll cover the following topics, in a 'follow along on your own laptop' style. By the end of this you'll have a good grounding in everyday Git usage.

  • Git is a 'stupid content tracker'
    • Why track content?
    • Key Git concepts
  • Tracking your content locally
    • Setting up Git for the first time
    • git init
    • The staging area
    • git add and git commit
    • What's going on? git status and git diff
    • What has been going on? git log and git show
  • Branches
    • Why branch?
    • Creating a branch
    • Moving between branches
    • Merging branches
  • Working with remotes
    • What is a remote?
    • Cloning from a remote
    • Getting new commits from a remote
    • Sending your commits to a remote
  • Getting help (how to read the man pages without going crazy; terminology; other resources)

Miscellaneous/Advanced Grab-bag

Probably more freestyle. For now, these are in no particular order:

  • Common/recommended Git workflows
  • Using GitHub
  • Ignoring files
  • Using and abusing the staging area (including stashing)
  • Rewriting history (git rebase and friends)
  • Finding out where things went wrong: git blame and git bisect
  • The reflog
  • Tags

Suggestions

Please add ideas for topics you'd like covered!

  • Naming and Addressing Things (suggestion from --PhilJones)
    • Often I try to look something up in the git documentation and the terminology can be confusing, if you come from other SCMs.
      • A clear explanation of what is exactly meant by HEAD.
      • How you refer to "the most recent commit" or "last Tuesday's commit" or "the second to last commit made by John that I pulled in this morning".
  • As a total newcomer I would favour a ground up, assume no prior knowledge version. Thanks. -- SpikeUK
    • This would be excellent for me as well: I'm using git but only what I've learned/hacked from online a more through grounding would be excellent SamLR
  • It'd be great if we could collaboratively compile a cheat sheet during the workshop. I primarily use Hg for personal projects so always find myself having to doc hunt when I intermittently need to do anything with Git beyond clone & pull basics and that's when I get all confuzzled 'cos the docs assume comprehensive knowledge and semi-informed confusion is dangerous with SCMs! -- Anthony
  • Related to my above point, maybe we should collate a set of use cases/common workflows. -- Anthony
    • As well as common workflows (good idea!) could we have useful tools etc? SamLR
  • How London Hackspace uses Github as a repo, and how to participate in its use. -- Ciemon
  • "Don't panic" - common screw-ups and how to recover from them? -- Anthony