Git for Version Control

Similar documents
Version control with Git.

CSE 391 Lecture 9. Version control with Git

Computer Science Design I Version Control with Git

GIT. CS 490MT/5555, Spring 2017, Yongjie Zheng

Topics covered. Introduction to Git Git workflows Git key concepts Hands on session Branching models. Git 2

Version Control: Gitting Started

GETTING STARTED WITH. Michael Lessard Senior Solutions Architect June 2017

GUIDE TO MAKE A REAL CONTRIBUTION TO AN OPEN SOURCE PROJECT 1. 1

Version Control with GIT

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

Git Introduction CS 400. February 11, 2018

Introduction to distributed version control with git

Laboratorio di Programmazione. Prof. Marco Bertini

A BASIC UNDERSTANDING OF VERSION CONTROL

Git. Ľubomír Prda. IT4Innovations.

Fundamentals of Git 1

AIS Grid School 2015

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

Algorithm Engineering

Versioning with git. Moritz August Git/Bash/Python-Course for MPE. Moritz August Versioning with Git

GIT Princípy tvorby softvéru, FMFI UK Jana Kostičová,

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

Git. Presenter: Haotao (Eric) Lai Contact:

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

Revision control. INF5750/ Lecture 2 (Part I)

Chapter 5. Version Control: Git

Lab 01 How to Survive & Introduction to Git. Web Programming DataLab, CS, NTHU

Introduction to Version Control

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

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

Software Development I

GIT VERSION CONTROL TUTORIAL. William Wu 2014 October 7

Tutorial 2 GitHub Tutorial

Introduction to Git and Github

Version Control. Version Control

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

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

Revision Control and GIT

Using Git to Manage Source RTL

Git tutorial. Katie Osterried C2SM. October 22, 2015

INET

Source Code Management wih git

A quick (and maybe practical) guide to Git and version control. By Jay Johnson

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


Using git to download and update BOUT++

[Software Development] Development Tools. Davide Balzarotti. Eurecom Sophia Antipolis, France

Version Control System - Git. zswu

CS 390 Software Engineering Lecture 5 More Git

Overview. 1. Install git and create a Github account 2. What is git? 3. How does git work? 4. What is GitHub? 5. Quick example using git and GitHub

Version Control with Git

Visualizing Git Workflows. A visual guide to 539 workflows

From Commits to Collaboration: A Git Tutorial for Social Scientists

License. Introduction to Version Control with Git. Local Version Control Systems. Why Use Version Control?

EECS 470 Lab 4. Version Control System. Friday, 31 st January, 2014

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

Version Control Systems

Submitting your Work using GIT

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

Git for Newbies. ComMouse Dongyue Studio

Version Control with Git

Version control system (VCS)

Barry Grant

! #Running this command from the top directory of your project will add all your changes."! $ git add."

Tutorial: Getting Started with Git. Introduction to version control Benefits of using Git Basic commands Workflow

Θερινό Σχολείο, Ιουλίου git. Αχιλλέας Πιπινέλης. Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας

Version Control Systems: Overview

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

GIT for companies Mark Struberg, INSO TU Vienna

Git. A Distributed Version Control System. Carlos García Campos

Version Control with GIT: an introduction

Introduction to Version Control with Git

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

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

Git & Github Fundamental by Rajesh Kumar.

Online Remote Repositories

VCS VERSION CONTROL SYSTEMS

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

Distributed Version Control (with Git)

Introduction to Version Control with Git and GitHub

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

CS 320 Introduction to Software Engineering Spring February 06, 2017

CS 378: Autonomous Intelligent Robotics (FRI) Dr. Todd Hester

Version Control Systems (Part 1)

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:

Lecture 6 Remotes. Sign in on the attendance sheet!

GIT FOR SYSTEM ADMINS JUSTIN ELLIOTT PENN STATE UNIVERSITY

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

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

Gitting things done. Hands-on introduction to git niceties. Jan Urbański Ducksboard

Managing Network Configurations with Git and GitLab

Version Control. Version Control

API RI. Application Programming Interface Reference Implementation. Policies and Procedures Discussion

Revision Control. An Introduction Using Git 1/15

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

Distributed Version Control

How To Use Git. Advanced: Tags & Branches. Mary Kate Trost July 8, 2011

How to be a 1337 h4ck3r: Git + Linux

What is git? Distributed Version Control System (VCS); Created by Linus Torvalds, to help with Linux development;

Version Control Systems. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University

Transcription:

Git for Version Control These slides are heavily based on slides created by Ruth Anderson for CSE 390a. Thanks, Ruth! images taken from http://git-scm.com/book/en/ http://www.cs.washington.edu/403/

About Git Created by Linus Torvalds, creator of Linux, in 2005 Came out of Linux development community Designed to do version control on Linux kernel Goals of Git: Speed Support for non-linear development (thousands of parallel branches) Fully distributed Able to handle large projects efficiently (A "git" is a cranky old man. Linus meant himself.) 2

Installing/learning Git Git website: http://git-scm.com/ Free on-line book: http://git-scm.com/book Reference page for Git: http://gitref.org/index.html Git tutorial: http://schacon.github.com/git/gittutorial.html Git for Computer Scientists: http://eagain.net/articles/git-for-computer-scientists/ At command line: (where verb = config, add, commit, etc.) git help verb 3

Centralized VCS In Subversion, CVS, Perforce, etc. A central server repository (repo) holds the "official copy" of the code the server maintains the sole version history of the repo You make "checkouts" of it to your local copy you make local modifications your changes are not versioned When you're done, you "check in" back to the server your checkin increments the repo's version 4

Distributed VCS (Git) In git, mercurial, etc., you don't "checkout" from a central repo you "clone" it and "pull" changes from it Your local repo is a complete copy of everything on the remote server yours is "just as good" as theirs Many operations are local: check in/out from local repo commit changes to local repo local repo keeps version history When you're ready, you can "push" changes back to server 5

Git snapshots Centralized VCS like Subversion track version data on each individual file. Subversion Git keeps "snapshots" of the entire state of the project. Each checkin version of the overall code has a copy of each file in it. Some files change on a given checkin, some do not. More redundancy, but faster. Git 6

Local git areas In your local copy on git, files can be: In your local repo (committed) Checked out and modified, but not yet committed (working copy) Or, in-between, in a "staging" area Staged files are ready to be committed. Unmodified/modified Files A commit saves a snapshot of all staged state. Staged Files Committed Files 7

Basic Git workflow Modify files in your working directory. Stage files, adding snapshots of them to your staging area. Commit, which takes the files in the staging area and stores that snapshot permanently to your Git directory. 8

Git commit checksums In Subversion each modification to the central repo increments the version # of the overall repo. In Git, each user has their own copy of the repo, and commits changes to their local copy of the repo before pushing to the central server. So Git generates a unique SHA-1 hash (40 character string of hex digits) for every commit. Refers to commits by this ID rather than a version number. Often we only see the first 7 characters: 1677b2d Edited first line of readme 258efa7 Added line to readme 0e52da7 Initial commit 9

Initial Git configuration Set the name and email for Git to use when you commit: git config --global user.name "Bugs Bunny" git config --global user.email bugs@gmail.com You can call git config list to verify these are set. Set the editor that is used for writing commit messages: git config --global core.editor nano (it is vim by default) 10

Creating a Git repo Two common scenarios: (only do one of these) To create a new local Git repo in your current directory: git init This will create a.git directory in your current directory. Then you can commit files in that directory into the repo. git add filename git commit m "commit message" To clone a remote repo to your current directory: git clone url localdirectoryname This will create the given local directory, containing a working copy of the files from the repo, and a.git directory (used to hold the staging area and your actual local repo) 11

Git commands command git clone url [dir] git add file git commit git status git diff git help [command] description copy a Git repository so you can add to it adds file contents to the staging area records a snapshot of the staging area view the status of your files in the working directory and staging area shows diff of what is staged and what is modified but unstaged get help info about a particular command git pull git push fetch from a remote repo and try to merge into the current branch push your new branches and data to a remote repository others: init, reset, branch, checkout, merge, log, tag 12

Add and commit a file The first time we ask a file to be tracked, and every time before we commit a file, we must add it to the staging area: git add Hello.java Goodbye.java Takes a snapshot of these files, adds them to the staging area. In older VCS, "add" means "start tracking this file." In Git, "add" means "add to staging area" so it will be part of the next commit. To move staged changes into the repo, we commit: git commit m "Fixing bug #22" To undo changes on a file before you have committed it: git reset HEAD -- filename (unstages the file) git checkout -- filename (undoes your changes) All these commands are acting on your local version of repo. 13

Viewing/undoing changes To view status of files in working directory and staging area: git status or git status s (short version) To see what is modified but unstaged: git diff To see a list of staged changes: git diff --cached To see a log of all changes in your local repo: git log or git log --oneline (shorter version) 1677b2d Edited first line of readme 258efa7 Added line to readme 0e52da7 Initial commit git log -5 (to show only the 5 most recent updates), etc. 14

An example workflow [rea@attu1 superstar]$ emacs rea.txt [rea@attu1 superstar]$ git status no changes added to commit (use "git add" and/or "git commit -a") [rea@attu1 superstar]$ git status -s M rea.txt [rea@attu1 superstar]$ git diff diff --git a/rea.txt b/rea.txt [rea@attu1 superstar]$ git add rea.txt [rea@attu1 superstar]$ git status # modified: rea.txt [rea@attu1 superstar]$ git diff --cached diff --git a/rea.txt b/rea.txt [rea@attu1 superstar]$ git commit -m "Created new text file" 15

Branching and merging Git uses branching heavily to switch between multiple tasks. To create a new local branch: git branch name To list all local branches: (* = current branch) git branch To switch to a given local branch: git checkout branchname To merge changes from a branch into the local master: git checkout master git merge branchname 16

Merge conflicts The conflicting file will contain <<< and >>> sections to indicate where Git was unable to resolve a conflict: <<<<<<< HEAD:index.html <div id="footer">todo: message here</div> ======= <div id="footer"> thanks for visiting our site </div> >>>>>>> SpecialBranch:index.html branch 1's version branch 2's version Find all such sections, and edit them to the proper state (whichever of the two versions is newer / better / more correct). 17

Interaction w/ remote repo Push your local changes to the remote repo. Pull from remote repo to get most recent changes. (fix conflicts if necessary, add/commit them to your local repo) To fetch the most recent updates from the remote repo into your local repo, and put them into your working directory: git pull origin master To put your changes from your local repo in the remote repo: git push origin master 18

GitHub GitHub.com is a site for online storage of Git repositories. You can create a remote repo there and push code to it. Many open source projects use it, such as the Linux kernel. You can get free space for open source projects, or you can pay for private projects. Free private repos for educational use: github.com/edu Question: Do I always have to use GitHub to use Git? Answer: No! You can use Git locally for your own purposes. Or you or someone else could set up a server to share files. Or you could share a repo with users on the same file system, as long everyone has the needed file permissions). 19