I thought I was okay with git, but the old adage is true: if you really want to learn something, get a student. I found out a lot about git’s nooks and crannies in the course of preparing the material. See how you do; it’s not meant to be tricky. Answers next week…
- Describe the working directory, staging area and repository.
- What two things does git rm myfile do?
- Where do the following commands get myfile from? (And in case you’re as clever as one participant: No, myfile is not a branch)
git checkout myfile git checkout HEAD -- myfile git checkout 9bffd0 -- myfile
- If git status says “Nothing to commit”, what’s in the staging area?
Branches and tags
- What’s a branch, really?
- If you want to continue from where you are now but on a new branch, what are the two steps to take (which can be rolled into one command)?
- How do you switch to another branch?
- Branches and tags are very similar. Why? And what’s the difference?
- What does alice/rel-1200 mean as a branch name?
- What can’t you do with a remote branch (e.g. bob/refactored)?
- If I fetch origin/master and then someone else pushes their master to origin, what happens to my origin/master?
- When does a merge conflict occur?
- What is the last step of a merge if there no conflicts?
- How do you signal you’ve resolved a conflict in a file?
- What’s a fast-forward merge?
Pushing and pulling
- What two operations does git pull do?
- Which branches will git pull origin pull down?
- Which branches will git push origin push up?
- Why is rebasing called “rebasing”?
- If you git rebase origin/master what line of commits gets moved where?
- How do you signal a conflict resolution on a file during a rebase?
- How do you continue the rebase after that?
- How do fetch and rebase in one command?
- What flag prevents a multiway (traditional) merge?
- When a commit moves as part of a rebase, what changes and what stays the same?
- What’s the danger in rebasing other people’s work?