Git and Github for Source Code Control
Course: GITSCC
Duration: 4 Days
Level: I
Course Summary
This course teaches the student how to use Git and Github for tracking, branching, merging, and managing code revisions. Through a series of lectures and workshops, this course takes the student from Git fundamentals to advanced techniques, and provides direction for navigating the many functions of this open source version control system.
« Hide The Details
Topics Covered In This Course
The Big Picture
- Background
- The Birth of Git
- Precedents
- Timeline
- What?s in a Name?
Installing Git
- Using Binary Distributions
- Obtaining a Source Release
- Building and Installing
- Installing Git on Windows
Getting Started
- The Git Command Line
- Quick Introduction to Using Git
- Configuration Files
- Inquiry
- View Sample
Basic Git Concepts
- View Sample
- Basic Concepts
- View Sample
- Object Store Pictures
- View Sample
- Git Concepts at Work
File Management and the Index
- It?s All About the Index
- File Classifications in Git
- Using git add
- Some Notes on Using git commit
- Using git rm
- Using git mv
- A Note on Tracking Renames
- The .gitignore File
- A Detailed View of Git?s Object Model and Files
Commits
- Atomic Changesets
- Identifying Commits
- Commit History
- Finding Commits
Branches
- Reasons for Using Branches
- Branch Names
- Using Branches
- Creating Branches
- Listing Branch Names
- Viewing Branches
- Checking out Branches
- Deleting Branches
Diffs
- Forms of the git diff Command
- Simple git diff Example
- git diff and Commit Ranges
- git diff with Path Limiting
- Comparing How Subversion and Git Derive diffs
Merges
- Merge Examples
- Working with Merge Conflicts
- Merge Strategies
- How Git Thinks About Merges
Altering Commits
- Caution About Altering History
- Using git reset
- Using git cherry-pick
- Using git revert
- reset, revert, and checkout
- Changing the Top Commit
- Rebasing Commits
Remote Repositories
- Repository Concepts
- Referencing Other Repositories
- Example Using Remote Repositories
- Remote Repository Development Cycle in Pictures
- Remote Configuration
- Working with Tracking Branches
- Adding and Deleting Remote Branches
- Bare Repositories and git push
Repository Management
- A Word About Servers
- Publishing Repositories
- Repository Publishing Advice
- Repository Structure
- Living with Distributed Development
- Knowing Your Place
- Working with Multiple Repositories
Patches
- Why Use Patches?
- Generating Patches
- Mailing Patches
- Applying Patches
- Bad Patches
- Patching Versus Merging
Hooks
- Installing Hooks
- Available Hooks
Combining Projects
- The Old Solution: Partial Checkouts
- The Obvious Solution: Import the Code into Your Project
- The Automated Solution: Checking out Subprojects Using Custom Scripts
- The Native Solution: gitlinks and git submodule
Submodule Best Practices
- Submodule Commands
- Why Submodules?
- Submodules Preparation
- Why Read Only?
- Why Not Read Only?
- Examining the Hashes of Submodule Commits
- Credential Reuse
- Use Cases
- Multilevel Nesting of Repos
- Submodules on the Horizon
Using Git with Subversion Repositories
- A Shallow Clone of a Single Branch
- Pushing, Pulling, Branching, and Merging with git svn
- Miscellaneous Notes on Working with Subversion
Advanced Manipulations
- Using git filter-branch
- rev-list
- Interactive Hunk Staging
- Recovering a Lost Commit
Tips, Tricks, and Techniques
- Interactive Rebase with a Dirty Working Directory
- Remove Left-Over Editor Files
- Garbage Collection
- Split a Repository
- Tips for Recovering Commits
- Subversion Conversion Tips
- Manipulating Branches from Two Repositories
- Recovering from an Upstream Rebase
- Make Your Own Git Command
- Quick Overview of Changes
- Cleaning Up
- Using git-grep to Search a Repository
- Updating and Deleting refs
- Following Files that Moved
- Keep, But Don?t Track, This File
- Have You Been Here Before?
Git and GitHub
- Repo for Public Code
- Creating a GitHub Repository
- Social Coding on Open Source
- Watchers
- News Feed
- Forks
- Creating Pull Requests
- Managing Pull Requests
- Notifications
- Finding Users, Projects, and Code
- Wikis
- GitHub Pages (Git for Websites)
- In-Page Code Editor
- Subversion Bridge
- Tags Automatically Becoming Archives
- Organizations
- REST API
- Social Coding on Closed Source
- Eventual Open Sourcing
- Coding Models
- GitHub Enterprise
- GitHub in Sum
What You Can Expect
At the end of this course, students will be able to:
- Understand how to use source code control
- Install Git and Github
- Use the Git command line
- Commit source code
- Use Branches, Diffs, and Merges
- Work with Repositories
- Combine projects
- Work with submodules
- Create and manage Github repositories
Who Should Take This Course
This course is designed for Programmers.
Training Style
Instructor led with 50% lecture and 50% lab.
« Hide The Details
Every student attending a Verhoef Training class will receive
a certificate good for $100 toward their next public class taken
within a year.
You can also buy "Verhoef Vouchers" to get a discounted rate for a
single student in any of our public or web-based classes.
Contact your account manager or our sales office for details.
|