Software Development. Using GIT. Pr. Olivier Gruber. Laboratoire d'informatique de Grenoble Université de Grenoble-Alpes

Size: px
Start display at page:

Download "Software Development. Using GIT. Pr. Olivier Gruber. Laboratoire d'informatique de Grenoble Université de Grenoble-Alpes"

Transcription

1 Software Development 1 Using GIT Pr. Olivier Gruber olivier.gruber@imag.fr Laboratoire d'informatique de Grenoble Université de Grenoble-Alpes

2 Overview 2 What is GIT Keeping histories of the evolution of files and directories The ability to merge histories, working alone or in a team Personal usage Protect and evolve your code Look at the past Team work Dividing work and be able to merge later Flexible cooperation

3 Real-life Scenarii 3 Personal usage examples Last minute, last change It started as a simple change, really Hum, what if... Team work examples Which USB key as the last version already? Trust me, I tested my changes... What? Fix you a bug now! Can t, in the middle of something Hey guys, sorry, but my machine died on me...

4 GIT concepts 4 GIT History A saga of transactions Tracks changes to a directory (its files and subdirectories) A transaction: do some work, then commit or abort init Git repo successive work sessions Work: create or delete directories create or delete files modify files c1 c2 c3 c4 commits Keep or toss your work

5 GIT concepts 5 GIT Repository A repository manages one tree of directories and files Git tracks the history of certain files and directories $ mkdir MyProject $ cd MyProject $ git init Initialized empty Git repository in../myproject/.git/ $ Git internal files Keeps previous versions of the tracked files MyProject ----.git ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo untracked files... tracked files...

6 GIT concepts 6 GIT Repository A repository manages one tree of directories and files Git tracks the history of certain files and directories MyProject ----.git ----.gitignore ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo give patterns to ignore Want to know more? $ man gitignore

7 GIT concepts 7 GIT Status Git tracks the history of certain files and directories Each file has a status untracked, tracked, modified MyProject ----.git ----.gitignore ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c --- main.c ---- Makefile ---- ToDo tracked, unmodified untracked (new file) tracked, but modified status

8 GIT concepts 8 GIT Status Git tracks the history of certain files and directories Each file has a status untracked, tracked, modified, indexed MyProject ----.git ----.gitignore ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c --- main.c ---- Makefile ---- ToDo Added to the index.. The index list all the files that are part of the current transaction

9 GIT concepts 9 GIT Status Git tracks the history of certain files and directories Each file has a status untracked, tracked, modified, indexed Commit: save changes for all the files in the index MyProject ----.git ----.gitignore ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c --- main.c ---- Makefile ---- ToDo After the commit, these are now tracked and unmodified

10 GIT concepts Recap 10 Four commands Git-init Create a repository Git-status Give you the status of files Git-add Add files to the index Modified or untracked files Git-commit Want to know more? $ man git-init $ man git-status $ man git-add $ man git-commit Commit changes to indexed files

11 GIT concepts Recap 11 Four commands Git-init Create a repository Git-status Give you the status of files Git-add $ mkdir MyProject $ cd MyProject $ git init Initialized empty Git repository in../myproject/.git/ $ Add files to the index Modified or untracked files Git-commit Commit changes to indexed files

12 GIT concepts Recap 12 Four commands Git-init Create a repository Git-status Give you the status of files Git-add Add files to the index $... Add main.c Modify Makefile $ git status Modified: Makefile Untracked: main.c Modified or untracked files Git-commit Commit changes to indexed files

13 GIT concepts Recap 13 Four commands Git-init Create a repository Git-status Give you the status of files Git-add Add files to the index Modified or untracked files Git-commit Commit changes to indexed files $... Add main.c Modify Makefile $ git status Modified: Makefile Untracked: main.c $ git add all $ git status Makefile main.c

14 GIT concepts Recap 14 Four commands Git-init Create a repository Git-status Give you the status of files Git-add Add files to the index Modified or untracked files Git-commit Commit changes to indexed files $... Add main.c Modify Makefile $ git status Modified: Makefile Untracked: main.c $ git add all $ git status Makefile main.c $ git commit -m Added main.c $ git status nothing to commit, working directory clean $

15 GIT concepts Recap 15 File System View Developer View Index View Repo View MyProject ----.git ----.gitignore ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c --- main.c ---- Makefile ---- ToDo MyProject ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c --- main.c ---- Makefile ---- ToDo Modified: Makefile Modified: foo.c Untracked: main.c History of all commits And the previous versions of tracked files

16 Using GIT for Oneself 16 For what? Permits trials and errors Provides a safety net Nothing is free Git maintains a history, so it requires space on your disk It takes some practice to getting used it

17 Using GIT Safety Net 17 Local safety net Git maintains a copy of your work in the.git directory So if you corrupt or loose a file/directory, you can recover it As long as you do not delete or damage the contents of the.git directory Remote safety net This is a bit more advanced usage You could clone your repository on a remote machine, used as a backed-up machine Example You could use your account at the UFR Or use github Or use another machine at home

18 Using GIT Safety Net 18 Git-checkout: revert changes Revert uncommitted changes Restore the contents of modified files Restore removed or renamed files or directories $ git add all $ git commit -m Task2 done Project/ Task1 Task2 Task3 Working on Task3 Ouch: - f***ed up file Toto.java - removed Titi.java $ git checkout Toto.java $ git checkout Titi.java...Finish Task3 Project/.git init checkouts c1 c2 c3 commits $ git add all $ git commit -m Task3 done

19 Using GIT Safety Net 19 Git-checkout: revert changes Revert all uncommitted changes only in tracked files Be careful here, you need to be sure before you ask for this it cannot be undone...working on Task2 $ git add all $ git commit -m Task2 done...working on OK, let s toss all that non sense... $ git checkout -f Project/ Project/.git init Task1 Task2 Task3 X c1 c2 commits checkout

20 Using GIT Safety Net 20 Git-checkout: revert changes, back several commits Revert all uncommitted changes in tracked files Oh oh Task2 and Task3 were a mistake Let s scratch that work. Project/ Task1 Task2 Task3 Task2 X X $ git log commit 75c027 c2 commit 35c025 c1 Project/.git init c1 c2 revert c3 $ git revert --no-commit 35c025..HEAD commits...now do it right $ git add --all $ git commit -m Ouf You can do it this way, but using branches is much easier...

21 Using GIT Branches 21 GIT history Branch: fork and merge your work Yields a tree of commits, on various branches master c1 c2 c8 c10 c13 branch-a c3 c7 WARNING: this may become complex branch-b branch-c c5 c4 c6 c9 c12 ADVICE: keep it simple branch-d c11 X

22 Using GIT branches 22 Switching between branches Changes the contents of tracked files Leaves untracked files untouched git checkout master git branch Task4 git checkout master MyProject ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo MyProject ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo MyProject ---- src --- foo.c --- bar.c --- main.c ---- Makefile ---- ToDo.org Untracked

23 Using GIT branches 23 Switching between branches Changes the contents of tracked files Leaves untracked files untouched git checkout master git branch Task4 git checkout master MyProject ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo MyProject ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo MyProject ---- src --- foo.c --- bar.c --- main.c ---- Makefile ---- ToDo.org MyProject ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo.org changed Untracked => unchanged

24 Using GIT branches 24 Switching between branches Changes the contents of tracked files Leaves untracked files untouched untracked object files... git checkout master git branch Task4 MyProject ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo MyProject ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo MyProject ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c --- main.c ---- Makefile ---- ToDo.org

25 Using GIT branches 25 Switching between branches Changes the contents of tracked files Leaves untracked files untouched untracked object files... git checkout master git branch Task4 git checkout master MyProject ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo MyProject ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo MyProject ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c --- main.c ---- Makefile ---- ToDo.org

26 Using GIT branches 26 Switching between branches Changes the contents of tracked files Leaves untracked files untouched untracked object files... checkout make clean git checkout master git branch Task4 git checkout master MyProject ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo MyProject ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo MyProject ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c --- main.c ---- Makefile ---- ToDo.org MyProject ---- bin --- foo.o --- bar.o ---- src --- foo.c --- bar.c ---- Makefile ---- ToDo.org changed

27 Using GIT branches 27 The simplest pattern Create a branch, merge it branch merge merge Delete the branch if no longer needed master $ git branch bug-fix $ git checkout bug-fix work on fixing the bug 1 bug-fix 2 3 X 2 $ git add all $ git commit -m Bug fixed commit delete 3 $ git checkout master Come back on the branch master 4 5 $ git merge bug-fix Merge the branch bug-fix into master No conflicts, if master is never worked on $ git add all $ git commit -m Bug fixed merged $ git branch -d bug-fix Optional delete of the branch

28 Using GIT branches 28 The simplest pattern A great safety net Create a branch, do some work branch Toss your work at any time... master 1 $ git checkout -b risky-try 1 3 work on trying something risky risky-try X 2 $ git add all $ git commit -m First commit commit 2 delete... If you do not like it at some point 3 $ git checkout master Come back on the branch master $ git branch -d risky-try Optional delete of the branch

29 Using GIT branches 29 What if your already started to work Then you realize this is going to be risky stuff No problem! (but avoid this situation nevertheless) started working stash & branch started working on something you are growing concerned just too risky master $ git stash $ git checkout -b risky-try $ git stash apply keep working Then comit or toss... risky-try commit or toss

30 Using GIT branches 30 Merge conflicts the hot-fix syndrome You are working on a new feature hoping for a few days of quiet dev-time Of course, a bug is found in your committed code a hot-fix is necessary When done with the hot-fix, you commit and merge onto master Going to you new new feature When done, can you merge to master? Hot-fix: merge and commit New-feature: merge master hot-fix merge with possible conflicts! new-feature

31 Using GIT branches 31 Always merge master on your local branch first Most updates on the same files are merged without conflicts Sometimes a manual merge is necessary You will need to practice it with your favorite merge tool Hot-fix: merge New-feature: merge master hot-fix $ git mergetool --tool=meld new-feature $ man git-mergetool merge and resolve conflicts

32 Using GIT branches 32 Merge conflicts Never merge on your master with potential conflicts... NEVER break your master! We mean it, NEVER! master X new-feature $ git mergetool --tool=meld $ man git-mergetool

33 Using GIT branches 33 Never break your master branch Never merge on your master with potential conflicts Always merge on your branch first... master new-feature $ git mergetool --tool=meld resolve conflicts, if any $ man git-mergetool

34 Using GIT branches 34 Never break your master branch Never merge on your master with potential conflicts Always merge on your branch first Always run regression tests before merging back on master master new-feature $ git mergetool --tool=meld $ man git-mergetool resolve conflicts, if any run regression tests

35 Using GIT branches 35 Safe Merge Workflow (1) run regression tests, they must pass before you can considering your work done (2) commit on your branch (3) merge the master branch on your branch (4) if the merge changed something goto (1) (5) merge your branch in the master branch master Final merge new-feature last commit always re-run regression tests run regression tests merge and resolve conflicts, if any last commit before merging with master

36 Using GIT branches 36 Safe Merge Workflow Using a merge branch Easy toss of the merge branch, if the merge should fail Easier if you ever need to checkout back and forth across branches (hot-fix for examples) master branch new-feature branch merge merge merge resolve conflicts, if any run regression tests

37 Using GIT Practice makes perfect 37 Do practice Again and again, until you are confortable with GIT Scared of making a mistake use branches Really scared try it on a copy of your project first Do not procrastinate Until you have a team project Keep it simple You will be happy you did, believe us Keep doing your backups Better safe than sorry Even if you use git clones

38 Using GIT Team Cooperation 38 Vera and John need to work together on a project They want to divide the work into features Develop features independently Vera Merge features incrementally Distributed Git Powerful and flexible tool Challenges Keep it simple! Really. Focus on keeping merges small and thus easy John

39 Using GIT Team Cooperation 39 Vera git-clone team-server git-clone John

40 Using GIT Team Cooperation 40 Cloning repositories across machines Create a repository (git-init), as a shared bare repository (--shared --bare) team-server $ mkdir -p /git-projects/projecta $ cd /git-projects/projecta $ git init --shared --bare Initialized empty shared Git repository in /git-projects/projecta $

41 Using GIT Team Cooperation 41 Cloning repositories across machines Team members clone that repository They get a local copy (called a clone) Vera git-clone team-server $ git clone vera@team-server:/git-projects/projecta $ cd ProjectA $ git-clone John

42 Using GIT Team Cooperation 42 Cooperation basics Vera does some work and publishes it John pulls Vera s work Vera $ cd ProjectA do some work does full testing $ git add all $ git commit -a -m Feature A $ git push git-server git-push John git-pull $ cd ProjectA $ git pull Now John sees Vera s work

43 Using GIT Team Cooperation 43 Challenges ALWAYS follow the same push-pull workflow STRIVE to keep merges small and thus easy NEVER break the repository pushing broken code Vera git-server git-push git-pull John

44 Using GIT Team Cooperation 44 1 new-feature 2 5 Vera master 4 git-merge 6 git-merge 3 git-pull 7 git-server 8 git-push Vera s Workflow: (1) create a branch to work in git checkout -b vera.feature.a (2) fully test and then commit git commit... (3) git pull from server clone git pull --all (4) merge master on your branch git merge master (5) fully test and then commit (6) git-merge on your master git checkout master; git merge vera.feature.a (7) tests and commit on master (8) git push

45 Using GIT Team Cooperation 45 Git-branch: new-feature merge conflicts Vera git-merge master git-merge git-pull git-push git-pull git-push git-server X rejected git-push

46 Using GIT Team Cooperation 46 Challenge of rejected git-push You may break the master on your clone But you can still fix it, test it, commit it, and then push it The pull-request pattern Only one team member does all merges on master Other team developers pull the master when starting a branch, from master, for a new feature

47 Using GIT Team Cooperation 47 Git-branch: Branch: vera.feature.a Branch: vera.feature.b Vera git-push master git-pull git-server git-pull git-push Branch: vera.feature.a John master git-merge git-merge

48 Using GIT Team Cooperation 48 Git-branch: Branch: vera.feature.a Checkout: vera.feature.a Vera git-push git-push master git-pull git-server git-pull git-push John Branch: vera.feature.a git-merge John rejects Vera s feature He returns it to Vera master

49 Conclusion 49 Git Powerful source control So keep it simple even simpler really we mean it! When to use it? Use it for your own personal development Use it for team development, but requires rigorous testing Practice it to learn it. Practice some more before using it on real projects... And do not forget, keep it simple. Really simple. Don t forget to backup your server repo

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read) 1 For the remainder of the class today, I want to introduce you to a topic we will spend one or two more classes discussing and that is source code control or version control. What is version control?

More information

Using Git to Manage Source RTL

Using Git to Manage Source RTL Using Git to Manage Source RTL CS250 Tutorial 1 (Version 082311) August 24, 2011 Brian Zimmer How to use this tutorial This class will be using Git for all of the labs and projects. This will allow the

More information

git commit --amend git rebase <base> git reflog git checkout -b Create and check out a new branch named <branch>. Drop the -b

git commit --amend git rebase <base> git reflog git checkout -b Create and check out a new branch named <branch>. Drop the -b Git Cheat Sheet Git Basics Rewriting Git History git init Create empty Git repo in specified directory. Run with no arguments to initialize the current directory as a git repository. git commit

More information

The Old World. Have you ever had to collaborate on a project by

The Old World. Have you ever had to collaborate on a project by What the Git? The Old World Have you ever had to collaborate on a project by Shuttling a USB drive back and forth Using Dropbox E-mailing your document around Have you ever accidentally deleted someone

More information

Common Git Commands. Git Crash Course. Teon Banek April 7, Teon Banek (TakeLab) Common Git Commands TakeLab 1 / 18

Common Git Commands. Git Crash Course. Teon Banek April 7, Teon Banek (TakeLab) Common Git Commands TakeLab 1 / 18 Common Git Commands Git Crash Course Teon Banek theongugl@gmail.com April 7, 2016 Teon Banek (TakeLab) Common Git Commands TakeLab 1 / 18 Outline 1 Introduction About Git Setup 2 Basic Usage Trees Branches

More information

Tizen/Artik IoT Practice Part 4 Open Source Development

Tizen/Artik IoT Practice Part 4 Open Source Development 1 Tizen/Artik IoT Practice Part 4 Open Source Development Sungkyunkwan University Contents 2 SCM Tool: Git Version Management Local & Remote Repository Branch Management Github Contribution Process Issue

More information

Git. Charles J. Geyer School of Statistics University of Minnesota. Stat 8054 Lecture Notes

Git. Charles J. Geyer School of Statistics University of Minnesota. Stat 8054 Lecture Notes Git Charles J. Geyer School of Statistics University of Minnesota Stat 8054 Lecture Notes 1 Before Anything Else Tell git who you are. git config --global user.name "Charles J. Geyer" git config --global

More information

Version Control System - Git. zswu

Version Control System - Git. zswu Version Control System - Git zswu Overview Why VCS? Why Git? Using Git Personally Using Git with Others Etiquette Rules of Using Git Tools & Services Tips 2 Why VCS (1/3) How do you manage your homework?

More information

Windows. Everywhere else

Windows. Everywhere else Git version control Enable native scrolling Git is a tool to manage sourcecode Never lose your coding progress again An empty folder 1/30 Windows Go to your programs overview and start Git Bash Everywhere

More information

DEAD-SIMPLE VERSION CONTROL FOR YOUR TEAM GIT WITH MATTHEW REIDSMA GRAND VALLEY STATE UNIVERSITY

DEAD-SIMPLE VERSION CONTROL FOR YOUR TEAM GIT WITH MATTHEW REIDSMA GRAND VALLEY STATE UNIVERSITY DEAD-SIMPLE VERSION CONTROL FOR YOUR TEAM WITH GIT MATTHEW REIDSMA GRAND VALLEY STATE UNIVERSITY WHO DOESN T USE VERSION CONTROL? VERSION CONTROL WHO? OH BOY. WHY YOU NEED VERSION CONTROL GIT GIT WHY GIT

More information

1. Git. Robert Snapp

1. Git. Robert Snapp . Git Robert Snapp snapp@cs.uvm.edu Department of Computer Science University of Vermont CS 3 (UVM). Git Fall 0 / Git CS 3 (UVM). Git Fall 0 / Setting your defaults in /.git > git config --global user.name

More information

About SJTUG. SJTU *nix User Group SJTU Joyful Techie User Group

About SJTUG. SJTU *nix User Group SJTU Joyful Techie User Group About SJTUG SJTU *nix User Group SJTU Joyful Techie User Group Homepage - https://sjtug.org/ SJTUG Mirrors - https://mirrors.sjtug.sjtu.edu.cn/ GitHub - https://github.com/sjtug Git Basic Tutorial Zhou

More information

Git. CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015

Git. CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015 Git CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015 1 Lecture Goals Present a brief introduction to git You will need to know git to work on your presentations this semester 2 Git

More information

Git, the magical version control

Git, the magical version control Git, the magical version control Git is an open-source version control system (meaning, it s free!) that allows developers to track changes made on their code files throughout the lifetime of a project.

More information

Version Control. Software Carpentry Github s Hello World Git For Ages 4 And Up You need source code control now

Version Control. Software Carpentry Github s Hello World Git For Ages 4 And Up You need source code control now A version control system (VCS) is a tool or system for keeping track of changes in files. A primitive form of VCS would be making a copy of a file every time you want to make a new version of the file.

More information

Submitting your Work using GIT

Submitting your Work using GIT Submitting your Work using GIT You will be using the git distributed source control system in order to manage and submit your assignments. Why? allows you to take snapshots of your project at safe points

More information

Getting the files for the first time...2. Making Changes, Commiting them and Pull Requests:...5. Update your repository from the upstream master...

Getting the files for the first time...2. Making Changes, Commiting them and Pull Requests:...5. Update your repository from the upstream master... Table of Contents Getting the files for the first time...2 Making Changes, Commiting them and Pull Requests:...5 Update your repository from the upstream master...8 Making a new branch (for leads, do this

More information

Lab Exercise Git: A distributed version control system

Lab Exercise Git: A distributed version control system Lunds tekniska högskola Datavetenskap, Nov 21, 2016 EDAF45 Programvaruutveckling i grupp projekt Labb 2 (Git): Labbhandledning Checked on Git versions: 2.7.4 Lab Exercise Git: A distributed version control

More information

CS 520: VCS and Git. Intermediate Topics Ben Kushigian

CS 520: VCS and Git. Intermediate Topics Ben Kushigian CS 520: VCS and Git Intermediate Topics Ben Kushigian https://people.cs.umass.edu/~rjust/courses/2017fall/cs520/2017_09_19.zip Our Goal Our Goal (Overture) Overview the basics of Git w/ an eye towards

More information

Git: Distributed Version Control

Git: Distributed Version Control Git: Distributed Version Control Computer Science and Engineering College of Engineering The Ohio State University Lecture 3 Demo Prep: Empty (but initialized) repo Linear development: Create, edit, rename,

More information

CS314 Software Engineering Configuration Management

CS314 Software Engineering Configuration Management CS314 Software Engineering Configuration Management Dave Matthews Configuration Management Management of an evolving system in a controlled way. Version control tracks component changes as they happen.

More information

Working in Teams CS 520 Theory and Practice of Software Engineering Fall 2018

Working in Teams CS 520 Theory and Practice of Software Engineering Fall 2018 Working in Teams CS 520 Theory and Practice of Software Engineering Fall 2018 Version Control September 18, 2018 Thursday (September 20) First in-class exercise On using git (today is a prelude with useful

More information

Git for Subversion users

Git for Subversion users Git for Subversion users Zend webinar, 23-02-2012 Stefan who? Stefan who? Freelancer: Ingewikkeld Stefan who? Freelancer: Ingewikkeld Symfony Community Manager Stefan who? Freelancer: Ingewikkeld Symfony

More information

Version control CSE 403

Version control CSE 403 Version control CSE 403 Goals of a version control system Keep a history of your work Explain the purpose of each change Checkpoint specific versions (known good state) Recover specific state (fix bugs,

More information

Revision Control. How can 4. Slides #4 CMPT 276 Dr. B. Fraser. Local Topology Simplified. Git Basics. Revision Control:

Revision Control. How can 4. Slides #4 CMPT 276 Dr. B. Fraser. Local Topology Simplified. Git Basics. Revision Control: How can 4 (or 4000) developers work on a product at once? Revision Control Revision Control Revision Control: Also called version control, source control, software configuration management. Motivation:

More information

Effective Software Development and Version Control

Effective Software Development and Version Control Effective Software Development and Version Control Jennifer Helsby, Eric Potash Computation for Public Policy Lecture 5: January 19, 2016 computationforpolicy.github.io Announcements Do look at the readings

More information

Advanced Operating Systems Control Versioning with GIT. Giuseppe Massari

Advanced Operating Systems Control Versioning with GIT. Giuseppe Massari Control Versioning with GIT Giuseppe Massari giuseppe.massari@polimi.it Outline 2/54 Why using version control tools? Why Git? First steps Getting help and configuration Basic concepts Local repository

More information

Object Oriented Programming. Week 1 Part 2 Git and egit

Object Oriented Programming. Week 1 Part 2 Git and egit Object Oriented Programming Part 2 Git and egit Lecture Review of Git Local Repository Remote Repository Using Git from Eclipse Review of Git 3 What is Git? Software Configuration Management (SCM) Supports

More information

Version Control with GIT

Version Control with GIT Version Control with GIT Benjamin Roth CIS LMU München Benjamin Roth (CIS LMU München) Version Control with GIT 1 / 30 Version Control Version control [...] is the management of changes to documents, computer

More information

2 Initialize a git repository on your machine, add a README file, commit and push

2 Initialize a git repository on your machine, add a README file, commit and push BioHPC Git Training Demo Script First, ensure that git is installed on your machine, and you have configured an ssh key. See the main slides for instructions. To follow this demo script open a terminal

More information

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 17, 2018

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 17, 2018 Version Control Click to edit Master EECS text 2311 styles - Software Development Project Second level Third level Fourth level Fifth level January 17, 2018 1 But first, Screen Readers The software you

More information

git Version: 2.0b Merge combines trees, and checks out the result Pull does a fetch, then a merge If you only can remember one command:

git Version: 2.0b Merge combines trees, and checks out the result Pull does a fetch, then a merge If you only can remember one command: Merge combines trees, and checks out the result Pull does a fetch, then a merge If you only can remember one command: git --help Get common commands and help git --help How to use git

More information

John DeDourek Professor Emeritus Faculty of Computer Science University of New Brunswick GIT

John DeDourek Professor Emeritus Faculty of Computer Science University of New Brunswick GIT John DeDourek Professor Emeritus Faculty of Computer Science University of New Brunswick GIT What is Git? A source code control system Implies program code A version control system Implies any sort of

More information

Software Development I

Software Development I 6.148 Software Development I Two things How to write code for web apps. How to collaborate and keep track of your work. A text editor A text editor A text editor Anything that you re used to using Even

More information

Git. Presenter: Haotao (Eric) Lai Contact:

Git. Presenter: Haotao (Eric) Lai Contact: Git Presenter: Haotao (Eric) Lai Contact: haotao.lai@gmail.com 1 Acknowledge images with white background is from the following link: http://marklodato.github.io/visual-git-guide/index-en.html images with

More information

Crash Course in C++ R F L Evans. www-users.york.ac.uk/~rfle500/

Crash Course in C++ R F L Evans. www-users.york.ac.uk/~rfle500/ Crash Course in C++ R F L Evans www-users.york.ac.uk/~rfle500/ Course overview Lecture 1 - Introduction to C++ Lecture 2 - Functions and Data Lecture 3 - Namespaces and Files Lecture 4 - Code Organization

More information

Lab 08. Command Line and Git

Lab 08. Command Line and Git Lab 08 Command Line and Git Agenda Final Project Information All Things Git! Make sure to come to lab next week for Python! Final Projects Connect 4 Arduino ios Creative AI Being on a Team - How To Maximize

More information

git-flow Documentation

git-flow Documentation git-flow Documentation Release 1.0 Johan Cwiklinski Jul 14, 2017 Contents 1 Presentation 3 1.1 Conventions............................................... 4 1.2 Pre-requisites...............................................

More information

Git: Distributed Version Control

Git: Distributed Version Control Git: Distributed Version Control Computer Science and Engineering College of Engineering The Ohio State University Lecture 3 What Does "D" Stand For? Distributed version control Multiple people, distributed

More information

Git Workflows. Sylvain Bouveret, Grégory Mounié, Matthieu Moy

Git Workflows. Sylvain Bouveret, Grégory Mounié, Matthieu Moy s Sylvain Bouveret, Grégory Mounié, Matthieu Moy 2017 [first].[last]@imag.fr http://recherche.noiraudes.net/resources/git/git-workflow-slides.pdf 1 / 16 Goals of the presentation Global history: multiple

More information

IC Documentation. Release 0.1. IC team

IC Documentation. Release 0.1. IC team IC Documentation Release 0.1 IC team Jan 22, 2019 Contents 1 How to contribute to IC 3 1.1 Prepare github.............................................. 3 1.2 Prepare your repositories.........................................

More information

Version control CSE 403

Version control CSE 403 Version control CSE 403 Goals of a version control system Keep a history of your work Explain the purpose of each change Checkpoint specific versions (known good state) Recover specific state (fix bugs,

More information

FEEG Applied Programming 3 - Version Control and Git II

FEEG Applied Programming 3 - Version Control and Git II FEEG6002 - Applied Programming 3 - Version Control and Git II Richard Boardman, Sam Sinayoko 2016-10-19 Outline Learning outcomes Working with a single repository (review) Working with multiple versions

More information

Software Project (Lecture 4): Git & Github

Software Project (Lecture 4): Git & Github Software Project (Lecture 4): Git & Github Wouter Swierstra, Atze Dijkstra Feb 2016 Wouter Swierstra, Atze Dijkstra Software Project (Lecture 4): Git & Github Feb 2016 1 / 45 Wouter Swierstra, Atze Dijkstra

More information

b. Developing multiple versions of a software project in parallel

b. Developing multiple versions of a software project in parallel Multiple-Choice Questions: 1. Which of these terms best describes Git? a. Integrated Development Environment b. Distributed Version Control System c. Issue Tracking System d. Web-Based Repository Hosting

More information

GIT FOR SYSTEM ADMINS JUSTIN ELLIOTT PENN STATE UNIVERSITY

GIT FOR SYSTEM ADMINS JUSTIN ELLIOTT PENN STATE UNIVERSITY GIT FOR SYSTEM ADMINS JUSTIN ELLIOTT PENN STATE UNIVERSITY 1 WHAT IS VERSION CONTROL? Management of changes to documents like source code, scripts, text files Provides the ability to check documents in

More information

Git GitHub & secrets

Git GitHub & secrets Git&GitHub secrets git branch -D local-branch git push origin :local-branch Much like James Cameron s Avatar, Git doesn t make any goddamn sense This talk throws a ton of stuff at you This talk throws

More information

Github/Git Primer. Tyler Hague

Github/Git Primer. Tyler Hague Github/Git Primer Tyler Hague Why Use Github? Github keeps all of our code up to date in one place Github tracks changes so we can see what is being worked on Github has issue tracking for keeping up with

More information

CSE 391 Lecture 9. Version control with Git

CSE 391 Lecture 9. Version control with Git CSE 391 Lecture 9 Version control with Git slides created by Ruth Anderson & Marty Stepp, images from http://git-scm.com/book/en/ http://www.cs.washington.edu/391/ 1 Problems Working Alone Ever done one

More information

1. Which of these Git client commands creates a copy of the repository and a working directory in the client s workspace. (Choose one.

1. Which of these Git client commands creates a copy of the repository and a working directory in the client s workspace. (Choose one. Multiple-Choice Questions: 1. Which of these Git client commands creates a copy of the repository and a working directory in the client s workspace. (Choose one.) a. update b. checkout c. clone d. import

More information

Visualizing Git Workflows. A visual guide to 539 workflows

Visualizing Git Workflows. A visual guide to 539 workflows Visualizing Git Workflows A visual guide to 539 workflows Table of Contents Notation Collaboration Without Review or Branches Merge Conflicts Requesting Code Review Collaboration with Multiple Branches

More information

Laboratorio di Programmazione. Prof. Marco Bertini

Laboratorio di Programmazione. Prof. Marco Bertini Laboratorio di Programmazione Prof. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Code versioning: techniques and tools Software versions All software has multiple versions: Each

More information

CSE 332: Data Structures and Parallelism Winter 2019 Setting Up Your CSE 332 Environment

CSE 332: Data Structures and Parallelism Winter 2019 Setting Up Your CSE 332 Environment CSE 332: Data Structures and Parallelism Winter 2019 Setting Up Your CSE 332 Environment This document guides you through setting up Eclipse for CSE 332. The first section covers using gitlab to access

More information

Git tutorial. Katie Osterried C2SM. October 22, 2015

Git tutorial. Katie Osterried C2SM. October 22, 2015 Git tutorial Katie Osterried C2SM October 22, 2015 Outline 1 What is Git and why are we switching? 2 Working with Git 3 Branching and Merging 4 Working with remote repositories 5 Recommendations Outline

More information

Git better. Collaborative project management using Git and GitHub. Matteo Sostero March 13, Sant Anna School of Advanced Studies

Git better. Collaborative project management using Git and GitHub. Matteo Sostero March 13, Sant Anna School of Advanced Studies Git better Collaborative project management using Git and GitHub Matteo Sostero March 13, 2018 Sant Anna School of Advanced Studies Let s Git it done! These slides are a brief primer to Git, and how it

More information

Git: (Distributed) Version Control

Git: (Distributed) Version Control Git: (Distributed) Version Control Computer Science and Engineering College of Engineering The Ohio State University Lecture 6 The Need for Version Control Track evolution of a software artifact Development

More information

GETTING TO KNOW GIT: PART II JUSTIN ELLIOTT PENN STATE UNIVERSITY

GETTING TO KNOW GIT: PART II JUSTIN ELLIOTT PENN STATE UNIVERSITY GETTING TO KNOW GIT: PART II JUSTIN ELLIOTT PENN STATE UNIVERSITY 1 REVERTING CHANGES 2 REVERTING CHANGES Change local files git reset git checkout Revert a commit in the branch history git revert Reset

More information

TDDC88 Lab 4 Software Configuration Management

TDDC88 Lab 4 Software Configuration Management TDDC88 Lab 4 Software Configuration Management Introduction "Version control is to programmers what the safety net is to a trapeze artist. Knowing the net is there to catch them if they fall, aerialists

More information

CS 390 Software Engineering Lecture 5 More Git

CS 390 Software Engineering Lecture 5 More Git CS 390 Software Engineering Lecture 5 More Git Reference: Scott Chacon and Ben Straub, Pro Git, published by Apress, available at https://git-scm.com/book/en/v2. Outline Finish local repository Remote

More information

Introduction to Git. Database Systems DataLab, CS, NTHU Spring, 2018

Introduction to Git. Database Systems DataLab, CS, NTHU Spring, 2018 Introduction to Git Database Systems DataLab, CS, NTHU Spring, 2018 1 Outline Version control system Git basics Git branch Remote repository 2 Outline Version control system Git basics Git branch Remote

More information

Git Guide. Meher Krishna Patel. Created on : Octorber, 2017 Last updated : October, More documents are freely available at PythonDSP

Git Guide. Meher Krishna Patel. Created on : Octorber, 2017 Last updated : October, More documents are freely available at PythonDSP Git Guide Meher Krishna Patel Created on : Octorber, 2017 Last updated : October, 2018 More documents are freely available at PythonDSP Table of contents Table of contents i 1 Commands Summary 1 2 Git

More information

CSE 332: Data Structures and Parallelism Autumn 2017 Setting Up Your CSE 332 Environment In this document, we will provide information for setting up Eclipse for CSE 332. The first s ection covers using

More information

How to version control like a pro: a roadmap to your reproducible & collaborative research

How to version control like a pro: a roadmap to your reproducible & collaborative research How to version control like a pro: a roadmap to your reproducible & collaborative research The material in this tutorial is inspired by & adapted from the Software Carpentry lesson on version control &

More information

From Commits to Collaboration: A Git Tutorial for Social Scientists

From Commits to Collaboration: A Git Tutorial for Social Scientists From Commits to Collaboration: A Git Tutorial for Social Scientists Paul Sangrey, University of Pennsylvania December 12, 2017 The Replication Crisis continues to heat up discussion across social science.

More information

Git Tutorial. André Sailer. ILD Technical Meeting April 24, 2017 CERN-EP-LCD. ILD Technical Meeting, Apr 24, 2017 A. Sailer: Git Tutorial 1/36

Git Tutorial. André Sailer. ILD Technical Meeting April 24, 2017 CERN-EP-LCD. ILD Technical Meeting, Apr 24, 2017 A. Sailer: Git Tutorial 1/36 ILD Technical Meeting, Apr 24, 2017 A. Sailer: Git Tutorial 1/36 Git Tutorial André Sailer CERN-EP-LCD ILD Technical Meeting April 24, 2017 LD Technical Meeting, Apr 24, 2017 A. Sailer: Git Tutorial 2/36

More information

Chapter 5. Version Control: Git

Chapter 5. Version Control: Git Chapter 5 Version Control: Git The Replication Crisis continues to heat up discussion across social science. Hence principled researchers want to make their work easy to replicate and reputable journals

More information

Index. Alias syntax, 31 Author and commit attributes, 334

Index. Alias syntax, 31 Author and commit attributes, 334 Index A Alias syntax, 31 Author and commit attributes, 334 B Bare repository, 19 Binary conflict creating conflicting changes, 218 during merging, 219 during rebasing, 221 Branches backup, 140 clone-with-branches

More information

CSC 2700: Scientific Computing

CSC 2700: Scientific Computing CSC 2700: Scientific Computing Record and share your work: revision control systems Dr Frank Löffler Center for Computation and Technology Louisiana State University, Baton Rouge, LA Feb 13 2014 Overview

More information

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects.

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects. Git AN INTRODUCTION Introduction to Git as a version control system: concepts, main features and practical aspects. How do you share and save data? I m working solo and I only have one computer What I

More information

History...: Displays a window of Gitk, a standard commit viewer for Git.

History...: Displays a window of Gitk, a standard commit viewer for Git. Git Services Wakanda includes Git features that will help you manage the evolution of your solutions and files. These features are designed to share code as well as to handle multi developer projects and

More information

Introduction to Supercomputing

Introduction to Supercomputing Introduction to Supercomputing TMA4280 Introduction to development tools 0.1 Development tools During this course, only the make tool, compilers, and the GIT tool will be used for the sake of simplicity:

More information

Git(Lab) Tutorial and Hands-On

Git(Lab) Tutorial and Hands-On Git(Lab) Tutorial and Hands-On Analysis Workshop 34th KATRIN Collaboration Meeting Institut für Kernphysik WWU Münster 21.02.2018 Git(Lab) Tutorial and Hands-On Or: Why branches aren t homeomorphic endofunctors

More information

Project Management. Overview

Project Management. Overview Project Management Overview How to manage a project? What is software configuration management? Version control systems Issue tracking systems N. Meng, L. Zhang 2 1 What is Project Management? Effective

More information

Git! Fundamentals. IT Pro Roundtable! June 17, 2014!! Justin Elliott! ITS / TLT! Classroom and Lab Computing!! Michael Potter!

Git! Fundamentals. IT Pro Roundtable! June 17, 2014!! Justin Elliott! ITS / TLT! Classroom and Lab Computing!! Michael Potter! Git! Fundamentals IT Pro Roundtable! June 17, 2014!! Justin Elliott! ITS / TLT! Classroom and Lab Computing!! Michael Potter! IT Communications 1 What is Version Control? Version Control System (VCS)!

More information

CS 320 Introduction to Software Engineering Spring February 06, 2017

CS 320 Introduction to Software Engineering Spring February 06, 2017 CS 320 Introduction to Software Engineering Spring 2017 February 06, 2017 Recap: Software development process models Traditional models Waterfall model Iterative and incremental Prototyping Spiral model

More information

CESSDA Expert Seminar 13 & 14 September 2016 Prague, Czech Republic

CESSDA Expert Seminar 13 & 14 September 2016 Prague, Czech Republic CESSDA Expert Seminar 13 & 14 September 2016 Prague, Czech Republic - basics Matthäus Zloch GESIS Outline for this session Git introduction and some theory Git command basics (plus some little advanced)

More information

Use git rm to remove files from workspace

Use git rm to remove files from workspace More Git: Removing files from the repository Branches, tags, merge conflicts Pull requests CPSC 491 First: Get up to speed from last time Removing files from your workspace Use git rm to remove files from

More information

Version control. what is version control? setting up Git simple command-line usage Git basics

Version control. what is version control? setting up Git simple command-line usage Git basics Version control what is version control? setting up Git simple command-line usage Git basics Version control - intro ensure we keep track of changes, updates, contributions, suggested mods... could try

More information

Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum

Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum Table of Contents Preparation... 3 Exercise 1: Create a repository. Use the command line.... 4 Create a repository...

More information

Git and GitHub. Dan Wysocki. February 12, Dan Wysocki Git and GitHub February 12, / 48

Git and GitHub. Dan Wysocki. February 12, Dan Wysocki Git and GitHub February 12, / 48 Git and GitHub Dan Wysocki February 12, 2015 Dan Wysocki Git and GitHub February 12, 2015 1 / 48 1 Version Control 2 Git 3 GitHub 4 Walkthrough Dan Wysocki Git and GitHub February 12, 2015 2 / 48 Version

More information

Subversion Repository Layout

Subversion Repository Layout Subversion Subversion Control manages documents over time keeps a history of all changes - multiple versions of every file coordinates work of multiple authors avoids conflicts...and helps to resolve them

More information

Improving Your Life With Git

Improving Your Life With Git Improving Your Life With Git Lizzie Lundgren elundgren@seas.harvard.edu Graduate Student Forum 26 April 2018 Scenarios to Avoid My code was deleted from 90-day retention! Crap, I can t remember what I

More information

Working with GIT. Florido Paganelli Lund University MNXB Florido Paganelli MNXB Working with git 1/47

Working with GIT. Florido Paganelli Lund University MNXB Florido Paganelli MNXB Working with git 1/47 Working with GIT MNXB01 2017 Florido Paganelli Lund University florido.paganelli@hep.lu.se Florido Paganelli MNXB01-2017 - Working with git 1/47 Required Software Git - a free and open source distributed

More information

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 11, 2017

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 11, 2017 Version Control Click to edit Master EECS text 2311 styles - Software Development Project Second level Third level Fourth level Fifth level January 11, 2017 1 Scenario 1 You finished the assignment at

More information

Using GitHub to Share with SparkFun a

Using GitHub to Share with SparkFun a Using GitHub to Share with SparkFun a learn.sparkfun.com tutorial Available online at: http://sfe.io/t52 Contents Introduction Gitting Started Forking a Repository Committing, Pushing and Pulling Syncing

More information

Beyond git add/commit/push

Beyond git add/commit/push add Working dir commit Staging area push Local Remote Based on original version made by Alexis López @aa_lopez About us @tuxtor @edivargas jorgevargas.mx github.com/tuxtor Review traditionals commands

More information

G E T T I N G S TA R T E D W I T H G I T

G E T T I N G S TA R T E D W I T H G I T G E T T I N G S TA R T E D W I T H G I T A A R O N H O O V E R & B R A D M I N C H J A N U A R Y 2 2, 2 0 1 8 1 Why use a version control system? Much of this document was blatantly cribbed from Allen

More information

Outline The three W s Overview of gits structure Using git Final stuff. Git. A fast distributed revision control system

Outline The three W s Overview of gits structure Using git Final stuff. Git. A fast distributed revision control system Git A fast distributed revision control system Nils Moschüring PhD Student (LMU) 1 The three W s What? Why? Workflow and nomenclature 2 Overview of gits structure Structure Branches 3 Using git Setting

More information

Version Control Systems

Version Control Systems Nothing to see here. Everything is under control! September 16, 2015 Change tracking File moving Teamwork Undo! Undo! UNDO!!! What strategies do you use for tracking changes to files? Change tracking File

More information

Technology Background Development environment, Skeleton and Libraries

Technology Background Development environment, Skeleton and Libraries Technology Background Development environment, Skeleton and Libraries Christian Kroiß (based on slides by Dr. Andreas Schroeder) 18.04.2013 Christian Kroiß Outline Lecture 1 I. Eclipse II. Redmine, Jenkins,

More information

A L A TEX-oriented intro to Git

A L A TEX-oriented intro to Git A L A TEX-oriented intro to Git the tex part is in the interactive demo not in the slides Danielle Amethyst Brake 22 October - 26 November, 2018 ICERM Semester on Nonlinear Algebra Inter-week collaboration

More information

Git Resolve Conflict Using Mine Command Line

Git Resolve Conflict Using Mine Command Line Git Resolve Conflict Using Mine Command Line We'll explore what approaches there are to resolve the conflict, and then we'll Please, fix them up in the work tree, and then use 'git add/rm ' as appropriate

More information

1/20/13 Git tutorial. Git tutorial. Mike Nolta. file:///users/nolta/github/reveal.js/git.html?print-paper#/ 1/31

1/20/13 Git tutorial. Git tutorial. Mike Nolta. file:///users/nolta/github/reveal.js/git.html?print-paper#/ 1/31 Git tutorial Mike Nolta file:///users/nolta/github/reveal.js/git.html?print-paper#/ 1/31 1. Basics file:///users/nolta/github/reveal.js/git.html?print-paper#/ 2/31 Tell git who you are $ git config --global

More information

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects.

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects. Git AN INTRODUCTION Introduction to Git as a version control system: concepts, main features and practical aspects. How do you share and save data? I m working solo and I only have one computer What I

More information

RSARTE Git Integration

RSARTE Git Integration RSARTE Git Integration Anders Ek IBM INTRODUCTION...3 EGIT BRIEF OVERVIEW...3 GETTING STARTED...6 ECLIPSE PROJECTS AND GIT REPOSITORIES...6 ACCESSING A REMOTE GIT REPOSITORY...7 IMPORTING AN EXISTING REPOSITORY...8

More information

Review Version Control Concepts

Review Version Control Concepts Review Version Control Concepts SWEN-261 Introduction to Software Engineering Department of Software Engineering Rochester Institute of Technology Managing change is a constant aspect of software development.

More information

CSCI 2132: Software Development. Norbert Zeh. Faculty of Computer Science Dalhousie University. Subversion (and Git) Winter 2019

CSCI 2132: Software Development. Norbert Zeh. Faculty of Computer Science Dalhousie University. Subversion (and Git) Winter 2019 CSCI 2132: Software Development Subversion (and Git) Norbert Zeh Faculty of Computer Science Dalhousie University Winter 2019 Version Control Systems A version control system allows us to Record the history

More information

How to git with proper etiquette

How to git with proper etiquette How to git with proper etiquette Let's start fixing how we use git here in crew so our GitHub looks even more awesome and you all get experience working in a professional-like git environment. How to use

More information

Intro Git Advices. Using Git. Matthieu Moy. Matthieu Moy Git 2016 < 1 / 11 >

Intro Git Advices. Using Git. Matthieu Moy. Matthieu Moy Git 2016 < 1 / 11 > Using Git Matthieu Moy Matthieu.Moy@imag.fr 2016 Matthieu Moy (Matthieu.Moy@imag.fr) Git 2016 < 1 / 11 > Outline 1 Revision Control System 2 Git: Basic Principles 3 Advices Using Git Matthieu Moy (Matthieu.Moy@imag.fr)

More information

Assumptions. GIT Commands. OS Commands

Assumptions. GIT Commands. OS Commands Many of the world s largest dev teams have adopted Git and it s not hard to see why It can handle small and large projects easily It has a tiny footprint It outclasses other version control tools It s

More information