Modern SCM Practices and GIT

A source control management system (SCM) is software that provides coordination and services between members of a software development team. At the most basic level, it provides file management and version control so that team members don’t write over each other’s changes, and only the newest versions of files are identified for use in the workspace.

SCMs also give developers the ability to work concurrently on files (in branches that may or may not converge), to merge changes with other developers’ changes, to track and audit changes that were requested and made, to track bug-fix status and to perform releases. In some cases, SCMs may include other components to assist in managing a software process throughout the entire lifecycle.

Git is the new fast-rising star of version control systems. Initially developed by Linux kernel creator Linus Torvalds. Git offers a much different type of version control in that it’s a distributed version control system. With a distributed version control system, there isn’t one centralized code base to pull the code from. Different branches hold different parts of the code. Other version control systems, such as SVN and CVS, use centralized version control, meaning that only one master copy of the software is used.


Topics Covered:

  1. Introduction to SCM systems
    • Overview of Software Version Control
    • Version Control Concepts
    • Comparing centralized vs. distributed systems
    • Proprietary/Open-Source SCM Tools
  2. GIT
    • What is Git?
      • Understanding version control
      • The history of Git
      • About Distributed Version control
    • Git Concepts and Architecture
    • Getting Started
      • Setting up a repository
      • Initializing a repository
      • Saving changes
      • Inspecting a repository
      • Viewing old commits
    • Making Changes to Files
      • Adding files
      • Editing files
      • Viewing changes with diff
      • Viewing only staged changes
      • Deleting files
      • Moving and renaming files
    • Undoing Changes
      • Undoing working directory changes
      • Unstaging files
      • Amending commits
      • Retrieving old versions
      • Reverting a commit
      • Using reset to undo commits
      • Removing untracked files
    • Ignoring Files
    • Navigating the Commit Tree
    • Branching & Merging
      • Branching can Change Your Life
      • Working With Branches
      • Publishing a Local Branch
      • Deleting Branches
      • Saving Changes Temporarily
      • Checking Out a Local Branch
      • Merging Changes
      • Branching Workflows
      • Cherry-Picking
    • Stashing Changes
    • Sharing Work via Remote Repositories
      • Introduction to Remote Repositories
      • Connecting a Remote Repository
      • Inspecting Remote Data
      • Integrating Remote Changes
    • Advanced Topics
      • Undoing Things
      • Inspecting Changes with Diffs
      • Dealing With Merge Conflicts
      • Rebase as an Alternative to Merge
      • Submodules
      • Workflows with git-flow
      • Authentication with SSH Public Keys
    • Tools & Services
      • Desktop GUIs
      • Diff & Merge Tools
      • Code Hosting Services
    • Migrate GIT from SVN
  3. 3rd Party Tools
    • Code Review Tools: Gerrit
    • Code Quality Management Tools – SonarSource
    • Code Analyzer Tools: FindBugs, Jlint etc...
  4. Best Practices of Good Source Code Management
  5. Selecting a SCM Tool that is rigth for you


Developers, architects


1 day


Instructor Lead


Any programming language experience.