Difference between revisions of "Workshops/Git Workshop"

From London Hackspace Wiki
Jump to navigation Jump to search
(Add introduction and scheduling)
Line 1: Line 1:
 +
This workshop will teach you about [http://git-scm.com/ Git], the fast version control system. You'll learn how manage files for your own software projects, and how to collaborate with others'. We will assume no prior knowledge about Git or any other version control system.
 +
 +
[http://groups.google.com/group/london-hack-space/browse_thread/thread/c206c01d6ac059d2 Discussion on the mailing list.]
 +
 +
== When ==
 +
 +
We're looking at fitting the workshop into a couple of hours on a weekday evening or a weekend afternoon. If you're interested in coming, please indicate your preferences in this Doodle poll:
 +
 +
http://doodle.com/dr62yn99z4tyxdxm
 +
 
== Programme (draft)==
 
== Programme (draft)==
  

Revision as of 20:55, 19 February 2011

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'. We will assume no prior knowledge about Git or any other version control system.

Discussion on the mailing list.

When

We're looking at fitting the workshop into a couple of hours on a weekday evening or a weekend afternoon. If you're interested in coming, please indicate your preferences in this Doodle poll:

http://doodle.com/dr62yn99z4tyxdxm

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