Teaching Revision (Change) Control Systems In High School CS Classes I teach AP Computer Science A and game design classes at the high school level in Washington state (where "revision control systems" are a grade level expectation (GLE) for 11th and 12th grade - all of the classes are mixed grade level, but that is probably a discussion for another day). We use the game design classes as our "bait" to get kids interested in CS, but there are usually some pretty sharp and motivated kids in those classes.

I want the students to work on collaborative projects and many of them want an easy way to move their work back and forth between home and our lab. This, and having a way to make mistakes and then back out of them (and the state GLEs) are motivating me to teach them how to use a revision control system. I'm inclined towards Git and GitHub both because I have experience with them and because GitHub offers private repositories to schools.

Our intro level game design class uses Code.orgs Game Lab which has a minimal, but useful revision control system. In AP CS and the upper level game design class we use a JetBrains IDEA (IDEA and Rider respectively) which have support for a variety of revision control systems built in.

So the questions:


When does revision control rise to the level of a "needed understanding" for students?
What are essential skills with revision control tools?
What are best practices (or good sources for learning about them)?
What tools to teach? I'm comfortable with Git and GitHub, and they are widely used, but are they good teaching tools?
Command line vs. GUI vs. IDE integrated interface?
If you're a college CS teacher, what do you want your incoming students to know?
I agree with the CSTA Standards that revision control is an important skill by upper high school.  My school has a GitHub account and it is good for both revision practice and for using Agile boards for task management, which is an important methodology for students to know as they move to college.  I think there is value in either GUI or Command Line knowledge.  

Here are some resources about Agile in Education:
https://www.agileineducation.org/examples.html

I like this resource for revision control:
https://betterexplained.com/articles/a-visual-guide-to-version-control/

The main ideas are backup/restore, synchronize (sharing resources with multiple people), tracking changes, sandboxes, branching, and merging.