Learning Objectives

  • List and explain the key features of version control systems
  • Illustrate the concepts of branching and merging
  • Match the following operations in Git with their description
  • Explain the difference between the working directory, staging area, and repository in Git
  • Use Git to track changes to files
  • Compare traditional system building with continuous integration

How to Complete this Lesson

Complete the following learning activities: (2.75–3.5 hours total)

  1. Watch the following videos about version control:
  2. Read the following in Software Engineering and (optionally) complete the reading guide:
    • Chapter 25: Configuration management (90–120 minutes)
      • Version management
      • System building
      • Change management (skim)
      • Release management (skim)
  3. Watch the following videos about Git:
  4. Read the Git Handbook, being sure to watch the following videos: (15 minutes)
  5. Watch What is Continuous Integration? (7 minutes)
  6. Participate in the synchronous session during the class meeting time (optional)
    • Honor (brief summary ‘cause you’ve heard it before)
    • Quizzes, specifically the help policy
    • Quick overview of version control, including branching and merging (5 minutes)
    • How to start the introductions assignment (10 minutes)
  7. Complete the quiz (5 minutes)
  8. Start the Introductions assignment (15–30 minutes)
    • Accept the assignment in GitHub Classroom
    • Clone the repository to your local machine

Due

As a reminder, the following is due this lesson:

Resources

Further Reading

Bryan O’Sullivan, “Making Sense of Revision-Control Systems,” Communications of the ACM, Vol. 52, No. 9, pp. 56-62, September 2009

Pro Git is an excellent resource to learn more about Git, from the basics to the nitty-gritty details. The following chapters are particularly relevant:

(Note that only the first section of each chapter is accessible via the prior links so you must view the later sections using the navigation buttons at the bottom of each page.)

If you prefer graphical user interface, GitHub Desktop is cross-platform and designed to work with GitHub. The following articles cover the basics of how to use it: