eecs 470 lab 4 - version control system · 2014-01-31 · friday,31st january,2014 (university of...

74
EECS 470 Lab 4 Version Control System Department of Electrical Engineering and Computer Science College of Engineering University of Michigan Friday, 31 st January, 2014 (University of Michigan) Lab 4: VCS Friday, 31 st January, 2014 1 / 62

Upload: others

Post on 07-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

EECS 470 Lab 4Version Control System

Department of Electrical Engineering and Computer ScienceCollege of EngineeringUniversity of Michigan

Friday, 31st January, 2014

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62

Page 2: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Overview

Administrivia

GitVCS BasicsDistributed VCSGit PreliminariesGit Basics by Example

Assignment

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 2 / 62

Page 3: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Administrivia

Administrivia

HomeworkI Homework 2 is due Monday, 3rd February at the beginning of lectureI If you haven’t, you need to get started now

Projects

I Project 3 is due Sunday, 9th February at 9:00PM

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

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 3 / 62

Page 4: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 4 / 62

Page 5: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git VCS Basics

History of VCS

MotivationAvoid having

I 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 Friday, 31st January, 2014 5 / 62

Page 6: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 7 / 62

Page 7: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Distributed VCS

Distributed VCS

VCS Structure – Centralized

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 8 / 62

Page 8: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 9 / 62

Page 9: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Distributed VCS

Distributed VCS

VCS Structure – Distributed

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 10 / 62

Page 10: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Distributed VCS

Hybrid VCS

The Hybrid Approach

I 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 Friday, 31st January, 2014 11 / 62

Page 11: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Distributed VCS

Distributed VCS

VCS Structure – Hybrid

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 12 / 62

Page 12: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Git Preliminaries

Subsection 3

Git Preliminaries

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 13 / 62

Page 13: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 14 / 62

Page 14: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Git Preliminaries

Secure Shell: Keys

SSH Keys

I Public-private key pair authenticationI Can also be password protected

ssh-keygen

I Creates ˜/.ssh/id_rsa (your private key) and ˜/.ssh/id_rsa.pub(your public key)

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 15 / 62

Page 15: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 16 / 62

Page 16: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Git Preliminaries

Git Configuration

Follow Along

I Run the following commands:I git config --global user.name “Your Name”I git config --global user.email “[email protected]

I Optionally:I Download wcunning-dotfiles.tar.gzI Open it upI Copy .gitconfig and .gitignore to your home directoryI Optionally copy other configs/google those programs

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 17 / 62

Page 17: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 18 / 62

Page 18: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 19 / 62

Page 19: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 20 / 62

Page 20: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 21 / 62

Page 21: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Git Basics by Example

Git Commands: clone

What does git clone do?

I Makes a copy of a repository

Syntax and Options

I Example: git clone <protocol>:/<repo> <directory>Clones the repo at <repo> into <directory>

I Repos can be accessed through several different protocolsI 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 Friday, 31st January, 2014 22 / 62

Page 22: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 23 / 62

Page 23: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 24 / 62

Page 24: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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/

Consequences

I .git/ directory is a full repoI 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 Friday, 31st January, 2014 25 / 62

Page 25: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Git Basics by Example

Git Concepts: Remotes

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

Consequences

I Clone automatically creates a remote named origin, which is thedefault for all remote operations

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 26 / 62

Page 26: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 27 / 62

Page 27: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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

Consequences

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

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 28 / 62

Page 28: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Options

I Example: git status

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 29 / 62

Page 29: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 30 / 62

Page 30: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Options

I 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 Friday, 31st January, 2014 31 / 62

Page 31: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 32 / 62

Page 32: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 33 / 62

Page 33: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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)

Consequences

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

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 34 / 62

Page 34: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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

Consequences

I 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 Friday, 31st January, 2014 35 / 62

Page 35: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Git Basics by Example

Git Commands: commit

What does git commit do?

I Combines everything in the staging area into a commit, described byyour log message

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

Syntax and Options

I Example: git commitI Interesting things are possible with commit hooks

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 36 / 62

Page 36: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Git Basics by Example

Git Ettiquette: Commits

What is a good commit?

I Informative message – short one liner followed by thorough paragraphsdescribing all of the changes

I Thematic – all of the changes should go together logically (e.g. addeda module and integrated it)

I Small – keeping your changes small makes it easier to find what brokeeverything by binary searching the commit history (bisect)

Why?

I All of these rules make it easier to find bugs and understand theprogression of a project

I Most are mandatory at companies

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 37 / 62

Page 37: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 38 / 62

Page 38: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 39 / 62

Page 39: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Options

I 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 Friday, 31st January, 2014 40 / 62

Page 40: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 41 / 62

Page 41: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 42 / 62

Page 42: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Options

I Example: git pullI Defaults to pulling the master branch from the origin repo

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 43 / 62

Page 43: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 44 / 62

Page 44: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 45 / 62

Page 45: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 46 / 62

Page 46: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Git Basics by Example

Git Commands: reset

What does git reset do?

I Replaces modified files in the working directory with the versions inthe local repo (at some commit hash, generally)

Syntax and Options

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

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 47 / 62

Page 47: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 48 / 62

Page 48: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 49 / 62

Page 49: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Git Basics by Example

Git Commands: branch

What does git branch do?

I Creates a pointer to a particular commit hash, future commits updatethis pointer

Syntax and Options

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

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 50 / 62

Page 50: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Git Basics by Example

Git Commands: checkout

What does git checkout do?

I Moves the working directory to the specified commit hash or pointerto a commit hash

Syntax and Options

I 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 Friday, 31st January, 2014 51 / 62

Page 51: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 52 / 62

Page 52: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 53 / 62

Page 53: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 54: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 55: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 56: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 57: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 58: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 59: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 60: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 61: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 62: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 63: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 64: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 65: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 66: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 54 / 62

Page 67: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Options

I 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 Friday, 31st January, 2014 55 / 62

Page 68: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 56 / 62

Page 69: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 57 / 62

Page 70: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Options

I 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 Friday, 31st January, 2014 58 / 62

Page 71: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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 Friday, 31st January, 2014 59 / 62

Page 72: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Git Git Basics by Example

Git Commands by Example: merge

[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 Friday, 31st January, 2014 60 / 62

Page 73: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

Assignment

Lab Assignment

I Assignment is posted to the course website as Lab 4 Assignment.I If you get stuck. . .

I Ask a neighbor, quietlyI Put yourself in the help queue

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, sign up in the help queue and markthat you would like to be checked off.

I If you are unable to finish today, the assignment needs to be checkedoff by a GSI in office hours before the next lab session.

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 61 / 62

Page 74: EECS 470 Lab 4 - Version Control System · 2014-01-31 · Friday,31st January,2014 (University of Michigan) Lab 4: VCS Friday, 31st January, 2014 1 / 62. Overview Administrivia Git

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. Add your Bitbucket username to the spreadsheet.

(University of Michigan) Lab 4: VCS Friday, 31st January, 2014 62 / 62