Duration:

2 Days

Audience:

Employees of federal, state and local governments; and businesses working with the government.

This course is intended for teams wanting to collaborate using GitHub, and for developers wanting to improve their Git skills.

Course Description:

Learn basic and advanced Git commands and learn how to better collaborate across the enterprise using the platform GitHub.

In today’s world, where people no longer need to be physically in the same room to complete projects, a powerful, distributed source control system is the solution. GitHub has made it easier for developers to continuously collaborate using Git.

This course is intended for teams wanting to collaborate using GitHub, and for developers wanting to improve their Git skills. You will start the course by learning to perform both basic and advanced Git commands. Then, you will learn best practices for using GitHub as a platform to develop code collaboratively. By the end of this course, you will know how to manage large-scale projects using Git and GitHub.

Learning Objectives:

  • Install Git on Windows, Mac, and Linux
  • Perform Basic Git Commands like Intitlizating a Repository, Creating a Branch, and Adding Commits
  • Perform Advanced Git Commands like Rebasing, Cherry-Picking, Aliases, and Hooks
  • Set Organization Accounts to Combine Multiple GitHub Users into an Organization
  • Split up Organization Accounts into Multiple Teams
  • Create a Repository and Set up Permissions
  • Make Pull Requests Work, Create a Branch, Push Commits, Create the Pull Request, Have Someone Approve, and Merge
  • Manage Large-Scaled Projects Using Git and GitHub

Please note: This course is designed for those using Bitbucket Server. If you use Bitbucket Cloud, please contact your training advisor and they can direct you to the correct course.

Course Outline:

Part 1: Git – Basic and Advanced Commands

1. Getting started with Git & GitHub

  • Why Git?
  • Installing Git on Windows
  • Installing Git on Mac
  • Installing Git on Linux
  • Signing up to GitHub
  • HTTPS
  • SSH
  • Understanding Git

2. Basic Git Commands

  • Configuration
  • Initializing a repository
  • Adding commits
  • Adding a remote
  • Pushing to the remote
  • Fetching from the remote
  • Pulling from the remote
  • Creating a branch
  • Merging
  • Cloning
  • Reset
  • Revert

3. Advanced Git Commands

  • Amending commits
  • Rebasing
  • Interactive rebasing
  • Cherry-picking
  • Bisect
  • Aliases
  • Hooks
    • Git hooks allow you to run scripts before or after certain Git actions (e.g., modify the commit message prior to committing).

Part 2: GitHub – Team and Enterprise Applications

1. Getting started with GitHub

  • Two-factor authentication
  • Searching GitHub
  • Starring repositories
  • Following people
  • Watching repositories
  • Commit email addresses
  • Notifications

2. Options for teams

  • Organization accounts
    • Organization accounts allow you to combine multiple GitHub users into an organization. A single GitHub user can be a member of several organizations. A repository can also be owned by an organization instead of a single user.
  • Teams
    • Organization accounts allow you to combine multiple GitHub users into an organization. A single GitHub user can be a member of several organizations. A repository can also be owned by an organization instead of a single user.
  • Paid plans
    • GitHub offers a lot of functionality for free. But companies often need more. The paid plans allow things like private repositories, fine-grained access control, extra support, etc.

3. Working in teams

  • GitHub Flow
    • GitHub Flow is an easy branching strategy. It starts from a master branch and creates only feature branches from there. The feature branches only get merged into the master branch when approved and ready for release. This allows a team to have a rapid cadence of releases, but it also creates some requirements that need to be addressed. For example, you will need a good CI/CD pipeline, a business that accepts rapid releases, possibly a good feature toggle system, etc.
  • Git Flow
    • GitFlow is a more complex branching strategy but allows for a more secure development and deployment pace. It’s often more fit for larger enterprises. Luckily, there are CLI plugins and GUI tools that support GitFlow and make it easy to work with. This way, developers don’t have to remember the specific commands and branching flows.
  • Documentation
  • Issues
  • Projects
    • GitHub projects give teams a Kanban board to organize and visualize their work. It’s a step up from GitHub Issues.
  • Releases
    • Git allows developers to create tags in their repositories. In GitHub, you can easily link these tags to “Releases.” A release can contain release notes, providing a nice overview of what changed over time.