100
EECS 470 Lab 4 Version Control System Department of Electrical Engineering and Computer Science College of Engineering University of Michigan Monday, September 21 st , 2020 (University of Michigan) Lab 4: VCS Monday, September 21 st , 2020 1 / 63

EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

EECS 470 Lab 4Version Control System

Department of Electrical Engineering and Computer ScienceCollege of EngineeringUniversity of Michigan

Monday, September 21st, 2020

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 1 / 63

Page 2: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Overview

Administrivia

GitVCS BasicsDistributed VCSGit PreliminariesGit Basics by Example

Assignment

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 2 / 63

Page 3: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Administrivia

Administrivia

HomeworkI Homework 2 is due Thursday, September 24th at 11:59 PMI If you haven’t, you need to get started now

ProjectsI Project 2 is due this Wednesday, September 23rd at 11:59 PMI Project 3 will be posted and will be due Monday, October 5th at 11:59

PM

We are available to answer questions on anything here. Office hours can befound on the course website.

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 3 / 63

Page 4: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git VCS Basics

Version Control Systems

What is a version control system?I Stores text filesI Keeps old versions aroundI Allows parallel work

Why do I care?I Prevents/helps prevent loss of data (nothing is foolproof)I Great for group workI Required for Project 3

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 4 / 63

Page 5: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git VCS Basics

History of VCS

MotivationAvoid havingI isr.v.oldI isr.v.old2I isr.v.workingI isr.v.REALLY_working

A Short History1950 Manual file naming1982 Revision Control System

Local

1986 Concurrent Versions System2000 Subversion

Central

2005 Git Distributed

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 5 / 63

Page 6: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Distributed VCS

Centralized VCS

What does it mean to be centralized?I Clients talk to a server, which is the one, true versionI Server copy keeps historyI Clients have a(n) (incomplete) working copy

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 7 / 63

Page 7: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Distributed VCS

Distributed VCS

VCS Structure – Centralized

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 8 / 63

Page 8: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Distributed VCS

Distributed VCS

What does it mean to be distributed?I Every copy is created equal (can all act as the server)I No one, true version

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 9 / 63

Page 9: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Distributed VCS

Distributed VCS

VCS Structure – Distributed

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 10 / 63

Page 10: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Distributed VCS

Hybrid VCS

The Hybrid ApproachI Use a DVCSI Set up a server to be the synchronization pointI Possibly still connect directly to colleagues, but generally not

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 11 / 63

Page 11: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Distributed VCS

Distributed VCS

VCS Structure – Hybrid

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 12 / 63

Page 12: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Preliminaries

Subsection 3

Git Preliminaries

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 13 / 63

Page 13: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Preliminaries

Secure Shell

What is ssh?I Secured remote connection to a server, e.g.

I Remote shellI How git (should) communicate(s) with other machines

What do I need to know?I Requires that you identify yourself:

I Key (RSA or DSA)I Password (keyboard-interactive)I Kerberos (gssapi-with-mic)

I Necessary for Bitbucket (coming up)

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 14 / 63

Page 14: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Preliminaries

Secure Shell: Keys

SSH KeysI Public-private key pair authenticationI Can also be password protected

ssh-keygenI Creates ˜/.ssh/id_rsa (your private key) and ˜/.ssh/id_rsa.pub

(your public key)

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 15 / 63

Page 15: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Preliminaries

Example: ssh-keygen

[wcunning@dahak ~] $ ssh-keygen -t rsa -b 4096Generating public/private rsa key pair.Enter file in which to save the key (/home/wcunning/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/wcunning/.ssh/id_rsa.Your public key has been saved in /home/wcunning/.ssh/id_rsa.pub.The key fingerprint is:3f:91:f9:7f:d7:be:4e:62:56:27:88:1d:3a:5d:b4:56 wcunning@dahakThe key's randomart image is:+--[ RSA 4096]----+| . E|| . o || . + || B = || S B + ...|| . + ...|| o .+ ..|| .o.o +|| o=+|+-----------------+

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 16 / 63

Page 16: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Preliminaries

Git Configuration

Follow AlongI Run the following commands:

I git config --global user.name “Your Name”I git config --global user.email “[email protected]

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 17 / 63

Page 17: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Preliminaries

Bitbucket

What is Bitbucket?I Free, online git repositoriesI More friendly to private repos than Github

What do I need to know?I Used for Project 3 and the final projectI You need to make an account, right nowI Once you have an account, add it to this spreadsheet

How to make a Bitbucket account. . .

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 18 / 63

Page 18: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Example Execution

[wcunning@dahak ~] $ git clone [email protected]:eecs470staff/course_material.gitCloning into 'course_material'...Warning: Permanently added the RSA host key for IP address '131.103.20.168' to the list of known hosts.remote: Counting objects: 183, done.remote: Compressing objects: 100% (166/166), done.remote: Total 183 (delta 39), reused 0 (delta 0)Receiving objects: 100% (183/183), 141.58 KiB | 0 bytes/s, done.Resolving deltas: 100% (39/39), done.Checking connectivity... done[wcunning@dahak Documents] $ cd course_material/[wcunning@dahak project1] [master] $ vim projects/project1/testD.v[wcunning@dahak project1] [master *] $ git add projects/project1/testD.v[wcunning@dahak project1] [master +] $ git commit[master 4caae96] Updated Project 1 to use @(posedge clock);1 file changed, 11 insertions(+), 11 deletions(-)

[wcunning@dahak project1] [master] $ git pushCounting objects: 10, done.Delta compression using up to 4 threads.Compressing objects: 100% (5/5), done.Writing objects: 100% (5/5), 544 bytes | 0 bytes/s, done.Total 5 (delta 3), reused 0 (delta 0)To [email protected]:eecs470staff/course_material.git

da0cf7a..4caae96 master -> master

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 19 / 63

Page 19: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Basics Introduction

StructureFor each command you need to know, we will1. Occasionally, an aside with a Git Concept we need to describe a

command2. Describe the command, along with any useful flags/options3. Show how the command affects the repositories4. Show an example with output

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 20 / 63

Page 20: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 21: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 22: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 23: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 24: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 25: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 26: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 27: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 28: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 29: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 30: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 31: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 32: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 33: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 34: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 35: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 36: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 37: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 38: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 39: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 40: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 41: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 42: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

06505f6

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 43: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

06505f6

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 44: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

06505f6

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 45: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure Commit Tree

9a12490

lab4

06505f6

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 21 / 63

Page 46: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=9a12490

Mark

HEAD=9a12490

Will

HEAD=9a12490

Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 22 / 63

Page 47: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands: clone

What does git clone do?I Makes a copy of a repository

Syntax and OptionsI Example: git clone <protocol>:/<repo> <directory>

Clones the repo at <repo> into <directory>I Repos can be accessed through several different protocols

I Git: Unsecured, do not useI HTTP(S): Used for freely available things, but push should use the

secured versionI SSH: The right answer, always secure, likely passwordless

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 23 / 63

Page 48: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=9a12490

Mark

HEAD=9a12490

Jon

HEAD=9a12490

Will

HEAD=9a12490

Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 24 / 63

Page 49: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands by Example: clone

[jbbeau@dahak ~] $ git clone [email protected]:eecs470staff/course_material.gitCloning into '.'...remote: Counting objects: 79, done.remote: Compressing objects: 100% (68/68), done.remote: Total 79 (delta 13), reused 0 (delta 0)Receiving objects: 100% (79/79), 79.99 KiB, done.Resolving deltas: 100% (13/13), done.

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 25 / 63

Page 50: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Concepts: Working Copy vs. Local Repo

What is the working copy?I The files/folders you actually operate onI e.g. group1/

What is the local repo?I The hidden folder containing the stored history for the repoI e.g. group1/.git/

ConsequencesI .git/ directory is a full repo

I Useful in the event that you needed a backupI Commits get stored hereI Synchronization with the remote is explicit

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 26 / 63

Page 51: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Concepts: Remotes

What is a remote?I Remotes are bookmarked repositories to synchronize with

ConsequencesI Clone automatically creates a remote named origin, which is the

default for all remote operations

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 27 / 63

Page 52: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=9a12490

Mark

HEAD=9a12490

Jon*

HEAD=9a12490

Will

HEAD=9a12490

Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 28 / 63

Page 53: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Concepts: Tracked Files

What does it mean for a file to be tracked?I Files that are tracked are stored in the repository

ConsequencesI Untracked files have no historyI Tracked files can be compared for changesI Files can be ignored (.gitignore)

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 29 / 63

Page 54: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands: status

What does git status do?I Shows the contents of the staging areaI Shows the files with differences to the most recent commitI Shows the files untracked by git

Syntax and OptionsI Example: git status

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 30 / 63

Page 55: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands by Example: status

[jbbeau@dahak slides] [master *] $ git status# On branch master# Changes not staged for commit:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)## modified: eecs470lab4slides.tex#

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 31 / 63

Page 56: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands: add

What does git add do?I If a file is untracked it becomes trackedI Otherwise, the current version is taken as a snapshot and added to the

staging area

Syntax and OptionsI Example: git add <files>I <files> can be any normal shell file structure (globs, wildcards,

directories, etc.)I if <files> has a directory, it is added recursivelyI git add –interactive:

Lets you add files and parts of files from the status outputinteractively; possibly good for commit building after a complex set ofchanges

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 32 / 63

Page 57: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=9a12490

Mark

HEAD=9a12490

Jon+

HEAD=9a12490

Will

HEAD=9a12490

Commit Tree

9a12490

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 33 / 63

Page 58: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands by Example: add

[jbbeau@dahak slides] [master *] $ git add eecs470lab4slides.tex[jbbeau@dahak slides] [master +] $ git status# On branch master# Changes to be committed:# (use git reset HEAD <file>..." to unstage## modified: eecs470lab4slides.tex#

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 34 / 63

Page 59: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Concepts: Snapshots

What is a snapshot?I git add doesn’t follow a file in perpetuityI Instead, it saves a snapshot (the state of the file at the time the

command was called)

ConsequencesI Files need to be added every time they are changedI Can add only certain files to a commit

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 35 / 63

Page 60: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Concepts: The Staging Area

What is the staging area?I Contains the snapshots to be used in creating the next commit

ConsequencesI Commits can be built thematicallyI Commits can be relatively small, even if changes to be committed are

large (useful for git bisect)

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 36 / 63

Page 61: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands: commit

What does git commit do?I Combines everything in the staging area into a commit, described by

your log messageI Adds it all to the local repoI Points at it with a commit hashI Changes HEAD to point at that commit hash

Syntax and OptionsI Example: git commitI Interesting things are possible with commit hooks

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 37 / 63

Page 62: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Ettiquette: Commits

What is a good commit?I Informative message – short one liner followed by thorough paragraphs

describing all of the changesI Thematic – all of the changes should go together logically (e.g. added

a module and integrated it)I Small – keeping your changes small makes it easier to find what broke

everything by binary searching the commit history (bisect)

Why?I All of these rules make it easier to find bugs and understand the

progression of a projectI Most are mandatory at companies

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 38 / 63

Page 63: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=9a12490

Mark

HEAD=9a12490

Jon

HEAD=f2ea0f5

Will

HEAD=9a12490

Commit Tree

9a12490

f2ea0f5

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 39 / 63

Page 64: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands by Example: commit

[jbbeau@dahak slides] [master +] $ git commit[master f2ea0f5] Lab 4 diagram change1 file changed, 1 insertion(+), 1 deletion(-)

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 40 / 63

Page 65: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands: push

What does git push do?I Puts all of your local commits on some remote

Syntax and OptionsI Example: git pushI Defaults to pushing the master branch to the origin repoI Interesting things are possible with push hooks

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 41 / 63

Page 66: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark

HEAD=9a12490

Jon

HEAD=f2ea0f5

Will

HEAD=9a12490

Commit Tree

9a12490

f2ea0f5

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 42 / 63

Page 67: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands by Example: push

[jbbeau@dahak slides] [master] $ git pushCounting objects: 11, done.Delta compression using up to 8 threads.Compressing objects: 100% (5/5), done.Writing objects: 100% (6/6), 475 bytes | 0 bytes/s, done.Total 6 (delta 3), reused 0 (delta 0)To [email protected]:eecs470staff/course_material.git

9a12490..f2ea0f5 master -> master

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 43 / 63

Page 68: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands: pull

What does git pull do?I Gets all commits from some remoteI This is actually a combination of git fetch followed by git merge

Syntax and OptionsI Example: git pullI Defaults to pulling the master branch from the origin repo

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 44 / 63

Page 69: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark

HEAD=f2ea0f5

Jon

HEAD=f2ea0f5

Will

HEAD=f2ea0f5

Commit Tree

9a12490

f2ea0f5

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 45 / 63

Page 70: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands by Example: pull

[wcunning@mycroft-holmes course_material] [master] $ git pullremote: Counting objects: 13, done.remote: Compressing objects: 100% (7/7), done.remote: Total 8 (delta 2), reused 0 (delta 0)Unpacking objects: 100% (8/8), done.From bitbucket.org:eecs470staff/course_material

9a12490..f2ea0f5 master -> origin/master

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 46 / 63

Page 71: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark

HEAD=f2ea0f5

Jon

HEAD=f2ea0f5

Will*

HEAD=f2ea0f5

Commit Tree

9a12490

f2ea0f5

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 47 / 63

Page 72: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands: reset

What does git reset do?I Replaces modified files in the working directory with the versions in

the local repo (at some commit hash, generally)

Syntax and OptionsI Example: git reset <hash> <file>I Replaces the contents of <file> with the version in <hash>I <hash> can be specified in relation to the HEAD (e.g. HEAD˜3)

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 48 / 63

Page 73: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark

HEAD=f2ea0f5

Jon

HEAD=f2ea0f5

Will

HEAD=f2ea0f5

Commit Tree

9a12490

f2ea0f5

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 49 / 63

Page 74: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands by Example: reset

[wcunning@mycroft-holmes slides] [master *] $ git status# On branch master# Changes not staged for commit:# (use "git add/rm <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)## deleted: beamerthemeLab.sty#no changes added to commit (use "git add" and/or "git commit -a")[wcunning@mycroft-holmes slides] [master *] $ git reset --hardHEAD is now at f2ea0f5 Lab 4 diagram change

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 50 / 63

Page 75: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands: branch

What does git branch do?I Creates a pointer to a particular commit hash, future commits update

this pointer

Syntax and OptionsI Example: git branch <branchname>I Creates a branch named <branchname> starting at the current HEAD

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 51 / 63

Page 76: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands: checkout

What does git checkout do?I Moves the working directory to the specified commit hash or pointer

to a commit hash

Syntax and OptionsI Example: git checkout <hash>I <hash> can be

I an older commit (e.g. HEAD˜2)I a branch, or other pointer, (e.g. lab4)

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 52 / 63

Page 77: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark

HEAD=f2ea0f5

Jon

HEAD=f2ea0f5

Will

HEAD=f2ea0f5

Commit Tree

9a12490

f2ea0f5

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 53 / 63

Page 78: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands by Example: branch, checkout

[wcunning@mycroft-holmes slides] [master] $ git branch lab4[wcunning@mycroft-holmes slides] [master] $ git statusOn branch masterYour branch is up-to-date with 'origin/master'.[wcunning@mycroft-holmes slides] [master] $ git checkout lab4Switched to branch 'lab4'

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 54 / 63

Page 79: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark

HEAD=f2ea0f5

Jon

HEAD=f2ea0f5

Will*

HEAD=f2ea0f5

Commit Tree

9a12490

f2ea0f5

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 80: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark

HEAD=f2ea0f5

Jon

HEAD=f2ea0f5

Will+

HEAD=f2ea0f5

Commit Tree

9a12490

f2ea0f5

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 81: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark

HEAD=f2ea0f5

Jon

HEAD=f2ea0f5

Will

HEAD=8e4bab6

Commit Tree

9a12490

f2ea0f5

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 82: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark*

HEAD=f2ea0f5

Jon

HEAD=f2ea0f5

Will

HEAD=8e4bab6

Commit Tree

9a12490

f2ea0f5

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 83: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark+

HEAD=f2ea0f5

Jon

HEAD=f2ea0f5

Will

HEAD=8e4bab6

Commit Tree

9a12490

f2ea0f5

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 84: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark

HEAD=b73416d

Jon

HEAD=f2ea0f5

Will

HEAD=8e4bab6

Commit Tree

9a12490

f2ea0f5

b73416d8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 85: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark*

HEAD=b73416d

Jon

HEAD=f2ea0f5

Will

HEAD=8e4bab6

Commit Tree

9a12490

f2ea0f5

b73416d8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 86: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark+

HEAD=b73416d

Jon

HEAD=f2ea0f5

Will

HEAD=8e4bab6

Commit Tree

9a12490

f2ea0f5

b73416d8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 87: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=f2ea0f5

Mark

HEAD=4b3d3cb

Jon

HEAD=f2ea0f5

Will

HEAD=8e4bab6

Commit Tree

9a12490

f2ea0f5

b73416d

4b3d3cb

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 88: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=4b3d3cb

Mark

HEAD=4b3d3cb

Jon

HEAD=f2ea0f5

Will

HEAD=8e4bab6

Commit Tree

9a12490

f2ea0f5

b73416d

4b3d3cb

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 89: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=4b3d3cb

Mark

HEAD=4b3d3cb

Jon

HEAD=f2ea0f5

Will*

HEAD=8e4bab6

Commit Tree

9a12490

f2ea0f5

b73416d

4b3d3cb

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 90: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=4b3d3cb

Mark

HEAD=4b3d3cb

Jon

HEAD=f2ea0f5

Will+

HEAD=8e4bab6

Commit Tree

9a12490

f2ea0f5

b73416d

4b3d3cb

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 91: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=4b3d3cb

Mark

HEAD=4b3d3cb

Jon

HEAD=f2ea0f5

Will

HEAD=06505f6

Commit Tree

9a12490

f2ea0f5

b73416d

4b3d3cb06505f6

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 92: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=4b3d3cb

Mark

HEAD=4b3d3cb

Jon

HEAD=f2ea0f5

Will

HEAD=06505f6

Commit Tree

9a12490

f2ea0f5

b73416d

4b3d3cb06505f6

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 55 / 63

Page 93: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands: merge

What does git merge do?I Combines two branches (when used manually)I Can mangle a repositoryI Can have conflicts

Syntax and OptionsI Example: git merge lab4I Merges the lab4 branch into the current branchI git mergetool helps you handle merge conflictsI See me in office hours if you need to do this. . .

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 56 / 63

Page 94: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=4b3d3cb

Mark

HEAD=4b3d3cb

Jon

HEAD=f2ea0f5

Will

HEAD=a292319

Commit Tree

9a12490

f2ea0f5

b73416d

4b3d3cb

a292319

06505f6

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 57 / 63

Page 95: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands by Example: merge

[wcunning@mycroft-holmes slides] [master $] $ git merge lab4Updating f2ea0f5..25cbbceFast-forward.gitignore | 68 +++++++labs/lab4/assignment/tex/eecs470lab4assignment.tex | 2 +-labs/lab4/slides/eecs470lab4slides.tex | 613 ++++++++++++++++++++labs/lab4/slides/script.txt | 148 ++++++++++++++labs/lab4/slides/ssh-keygen.txt | 21 ++5 files changed, 841 insertions(+), 11 deletions(-)create mode 100644 .gitignorecreate mode 100644 labs/lab4/slides/script.txtcreate mode 100644 labs/lab4/slides/ssh-keygen.txt

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 58 / 63

Page 96: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands: tag

What does git tag do?I Creates an additional pointer to a particular commit hash

Syntax and OptionsI Example: git tag -a <tagname> <hash>I Creates a pointer to <hash> called <tagname>I This pointer can be checked out just like a branchI Tags are local by default, push with git push <tagname>

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 59 / 63

Page 97: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Diagram

Git Repo Structure

[origin]

HEAD=4b3d3cb

Mark

HEAD=4b3d3cb

Jon

HEAD=f2ea0f5

Will

HEAD=a292319

Commit Tree

9a12490

f2ea0f5

b73416d

4b3d3cb

a292319lab4

06505f6

8e4bab6

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 60 / 63

Page 98: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Git Git Basics by Example

Git Commands by Example: tag

[wcunning@mycroft-holmes w14] [master] $ git tag -a lab4-release HEAD[wcunning@mycroft-holmes w14] [master] $ git push origin lab4-releaseCounting objects: 1, done.Writing objects: 100% (1/1), 187 bytes | 0 bytes/s, done.Total 1 (delta 0), reused 0 (delta 0)To [email protected]:eecs470staff/course_material.git* [new tag] lab4-release -> lab4-release

[wcunning@mycroft-holmes w14] [master] $ git tag -llab4-release

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 61 / 63

Page 99: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Assignment

Lab Assignment

I Assignment is posted to the course websiteI If you get stuck. . .

I Please feel free to post on piazza or come to office hours!

I Note: Unlike most labs, to get checked off for this one, you will alsoneed to have made your Bitbucket account and entered it in thespreadsheet.

I When you finish the assignment, visit the office hours help queue andget checked off and mark that you would like to be checked off.

I Ensure this is checked off by the end of lab on Friday, October 2nd

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 62 / 63

Page 100: EECS 470 Lab 4Git Git Basics by Example Git Basics Introduction Structure For each command you need to know, we will 1. Occasionally, an aside with a Git Concept we need to describe

Bitbucket Guide

Bitbucket Account Setup

1. Go to Bitbucket Sign Up2. Fill out the form.

I Preferably, use your uniqname as your usernameI Use your @umich.edu email addressI Choose “Personal Account”

3. Click on the little silhouette of a person in the upper right corner.4. Select “Manage Account” from the list.5. Click on “SSH Keys” in the list on the left.6. Click on “Add Key.”7. In the pop up, paste the contents of ˜/.ssh/id_rsa.pub, and name

the key whatever you would like.8. Check that this worked by running9. Add your Bitbucket username to the spreadsheet.

(University of Michigan) Lab 4: VCS Monday, September 21st, 2020 63 / 63