1. In your own words, why might it be bad practice to push directly to the master branch of a repository? What might be a better practice instead? What are some ways that projects enforce these practices?

  2. What are the commands to create a new branch, switch to that branch, and commit a set of staged changes? Are there any shorthands for these commands?

  3. Suppose that we have two branches branch1 and branch2 and git log tells us that HEAD is pointing to branch2. What are the command[s] to merge branch2 into branch1?

  4. Suppose we’re working on branch2, and we’ve opened a merge request to merge into master on GitLab. Someone else makes changes to master which causes conflicts with our changes. How might we resolve these changes on Gitlab and then preview them locally?

  5. Suppose that we knew our project was in a working state when we made a commit with the message: Commit 1. How might we temporarily put our local repository in the same state as it was when we made that commit? How might we identify what changes we’ve made since then?