Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small...

14
Version control with git Eike Mueller, University of Bath Wed 26 th Sep 2018 Eike Mueller, University of Bath Version control with git

Transcript of Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small...

Page 1: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

Version control with git

Eike Mueller, University of Bath

Wed 26th Sep 2018

Eike Mueller, University of Bath Version control with git

Page 2: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

Why version control?

“Piled Higher and Deeper” by Jorge Cham, http://www.phdcomics.com

Eike Mueller, University of Bath Version control with git

Page 3: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

Version control

Benefits of Version controlSystematic and controlled Backup

Collaborate: work on same document simultaneously

Keep track of changes (who introduced feature X and why?)

Try out changes and revert to working version(“undo”-button)

Work on project on different machines

Simplifies debugging

Reproducibility

What’s the catch?Have to learn a few commands to interact with git

Enforces organised approach

Eike Mueller, University of Bath Version control with git

Page 4: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

Applications

Version control can be be applied to:Source code (matlab, Fortran, C, Python, . . . )

LaTeX (papers, reports, your thesis, . . . )

Raw results (e.g. CSV files with numerical values)

Any text files1

Reproducibility: Link results to particular code version

1Binary files work as well, but harder to track changesEike Mueller, University of Bath Version control with git

Page 5: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

Basic concepts

Tracking of changes

Collaborating Merging and resolvingconflicts

All figures from Software Carpentry webpage

Eike Mueller, University of Bath Version control with git

Page 6: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

git

Why git?de-facto standard now (supersedes subversion, CVS, . . . )

Several nice features:

Work remotely (distributed system allows offline commits)Simple and lightweight branching⇒ encourages experimentationSelective commits (staging area)Very powerful

Not the easiest system to learn

We’ll only cover the basics hereLots of online resourcesGraphical interfaces (e.g. SourceTree)

DocumentationGit book: http://git-scm.com/book/en/v2

Reference: http://git-scm.com/docs

Eike Mueller, University of Bath Version control with git

Page 7: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

Overview

Session 1 (Basics) 13:45h - 15:00h

Creating a git repository

Tracking changes

Exploring history

— break —

Session 2 (Collaborating) 15:30h - 17:00h

Working with remotes (github)

Collaborating and resolving conflicts

Wrapup and advanced concepts (branching, merging, . . . )

Resources available at2

http://people.bath.ac.uk/rjg20/training/

2All material used is based on Software Carpentry webpagehttp://software-carpentry.org/

Eike Mueller, University of Bath Version control with git

Page 8: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

Eike Mueller, University of Bath Version control with git

Page 9: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

github

Create a github account

go to https://github.com/

click here

Use your University email address

Eike Mueller, University of Bath Version control with git

Page 10: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

Eike Mueller, University of Bath Version control with git

Page 11: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

Wrapup

SummaryTrack changes and collaborate

Pays off even for small projects

Small number of commands1 git log2 git status3 git add4 git commit5 git clone/push/pull

There are graphical tools (e.g. SourceTree for Mac/Win)

Other hosting sites: BitBucket, GitLab

More detailsGit book: http://git-scm.com/book/en/v2

Reference: http://git-scm.com/docs

Eike Mueller, University of Bath Version control with git

Page 12: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

Advanced topics

Advanced topicsWhat actually is a commit?

Branching and merging, the rebase command

Rewriting history

Pull requests

Advanced workflows

Forking repositories

Tags

Stashing

Eike Mueller, University of Bath Version control with git

Page 13: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

Branches

A Quick glance at branchesBranches allow organised simultaneous development by collectingrelated commits

Bugfix

New untested feature

Master branch(guaranteed to work)

Usually:

1 concept/feature = 1 branch

https://git-scm.com/book

git branch = lightweight pointer

Eike Mueller, University of Bath Version control with git

Page 14: Version control with git · Wrapup Summary Track changes and collaborate Pays o even for small projects Small number of commands 1 git log 2 git status 3 git add 4 git commit 5 git

Branches

Merge and resolve conflicts

Basic merge and rebase

Pull requests on github and BitBucket

Code review

Can limit access to master branch

https://git-scm.com/book

Eike Mueller, University of Bath Version control with git