O'Reilly logo
live online training icon Live Online training

Next Level Git - Master your content

Use powerful tools in Git to simplify merges, rewrite history, and perform automatic updates

Topic: Web Ops & Performance
Brent Laster

If you're doing anything with open source these days, the chances are very high that you are working with Git. Many know enough basic Git operations to get started but haven’t found the time (or even know where to look) to learn about Git’s advanced functionality. Git has an immense collection of power operations and techniques that can help you simplify your development process and deal with the challenges that today’s multibranch and multirepository projects often engender.

Brent Laster explains how to take your Git skills to the next level, covering useful techniques—some which have existed in Git for years and some which were included in very recent versions—for managing your source code more easily than ever before. In part two of this hands-on three-hour training, Brent walks you through automating and modifying repositories. Don’t spend time reinventing the wheel or working around Git. Join in to learn how Git can help you be more productive and simplify your workflow more than you ever thought possible.

What you'll learn-and how you can apply it

By the end of this live, online course, you’ll understand:

  • Git core concepts and design
  • How to use Git to automate and modify repositories

And you’ll be able to:

  • Use advanced Git functionality to manage source code
  • Increase productivity and simplify development workflows

This training course is for you because...

  • You’re a developer who needs a powerful source management tool that doesn’t get in the way.
  • You’re a manager or project manager who wants to understand how to access and examine code in a Git repository.
  • You’re a tester who wants a way to easily manage your tests in source control.


  • A working knowledge of source control concepts
  • Experience using at least one source control system

Required materials and setup:

  • A machine with Git (http://git-scm.org) installed (Ensure that you can run Git from the command line by opening a terminal or emulator session and typing “git --version”. This should return the current version for the revision of Git that you have installed.)
  • A GitHub account (free is fine)

About your instructor

  • Brent Laster is a global trainer, author, and speaker on open source technologies as well as an R&D director at a top technology company. He’s been involved in the software industry for more than 25 years, holding various technical and management positions. Brent has always tried to make time to learn and develop both technical and leadership skills and share them with others. He believes that regardless of the topic or technology, there’s no substitute for the excitement and sense of potential that come from providing others with the knowledge they need to accomplish their goals.


The timeframes are only estimates and may vary according to how the class is progressing

Rerere (reuse recorded resolution) (40 minutes)

  • Lecture: The Git rerere command; options; use cases; examples
  • Hands-on exercise: Use rerere to teach Git how to resolve merges automatically

Bisect (20 minutes)

  • Lecture: The Git bisect command; options; use cases; examples
  • Hands-on exercise: Use bisect to quickly identify the commit that introduced a problem

Break (10 minutes)

Filter-branch (35 minutes)

  • Lecture: Using the Git filter-branch plumbing command to rewrite history in Git using several of the built-in filters that the command provides; the rev-list command, which provides a way to list out revisions based on a range or criteria
  • Hands-on exercise: Use filter-branch to split out a subdirectory into a separate repository, remove a file from the history, and change the email address on a series of commits

Interactive rebase (20 minutes)

  • Lecture: Using the Git interactive rebase functionality to alter commits in various ways
  • Hands-on exercise: Use the interactive rebase functionality to squash multiple commits down into one

Break (10 minutes)

Supporting files (35 minutes)

  • Lecture: The Git attributes file; using it to identify binary files, specify line endings for file types, implement custom filters, and have Git ignore specific file paths during merging; using the Git ignore file to identify files and directories that should not be processed by Git
  • Hands-on exercise: Implement a Git attributes file to do some custom filtering

Other useful commands (10 minutes)

  • Lecture: The Git notes command and how to use it to augment information about commits; the Git grep command and how to use it to locate information within a Git repository