Git for Version Control These slides are heavily based on slides created by Ruth Anderson for CSE 390a. Thanks, Ruth! images taken from

Slides:



Advertisements
Similar presentations
Introduction To GIT Rob Di Marco Philly Linux Users Group July 14, 2008.
Advertisements

Git Branching What is a branch?. Review: Distributed - Snapshots Files are stored by SHA-1 hash rather than filename Stored in git database in compressed.
Introduction to git Alan Orth Nairobi, Kenya September, 2010 version control for serious hackers ;)
Version Control with git. Version Control Version control is a system that records changes to a file or set of files over time so that you can recall.
1 CSE 390 “Lecture 11” Version control with Git slides created by Ruth Anderson, images from
Introduction to Git and Github Joshua imtraum.com.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Fundamentals of Git By Zachary Ling 29 th, Aug,
Getting Started with GIT. Basic Navigation cd means change directory cd.. moves you up a level cd dir_name moves you to the folder named dir_name A dot.
Introduction to Version Control with SVN & Git CSC/ECE 517, Fall 2012 Titus Barik & Ed Gehringer, with help from Gaurav.
علیرضا فراهانی استاد درس: جعفری نژاد مهر Version Control ▪Version control is a system that records changes to a file or set of files over time so.
Peter Ogden and Josh Levine.  Motivation  High level overview  Walk through the common operations  How not to break things (too badly)
Git – versioning and managing your software L. Grewe.
Git A distributed version control system Powerpoint credited to University of PA And modified by Pepper 8-Oct-15.
Version Control Systems academy.zariba.com 1. Lecture Content 1.What is Software Configuration Management? 2.Version Control Systems (VCS) 3.Basic Git.
…using Git/Tortoise Git
Git workflow and basic commands By: Anuj Sharma. Why git? Git is a distributed revision control system with an emphasis on speed, data integrity, and.
SWEN 302: AGILE METHODS Roma Klapaukh & Alex Potanin.
Information Systems and Network Engineering Laboratory II DR. KEN COSH WEEK 1.
Team 708 – Hardwired Fusion Created by Nam Tran 2014.
Introduction to Version Control with Git CSC/ECE 517, Fall 2014 A joint project of the CSC/ECE 517 staff, including Titus Barik, Gaurav Tungatkar, Govind.
1 GIT NOUN \’GIT\ A DISTRIBUTED REVISION CONTROL AND SOURCE CODE MANAGEMENT (SCM) SYSTEM WITH AN EMPHASIS ON SPEED. INITIALLY DESIGNED AND DEVELOPED BY.
Sofia Event Center May 2014 Martin Kulov Git For TFS Developers.
Version Control System Lisa Palathingal 03/04/2015.
GIT.
Intro to Git presented by Brian K. Vagnini Hosted by.
Lecture 2 Making Simple Commits Sign in on the attendance sheet! credit:
Introduction to Git Yonglei Tao GVSU. Version Control Systems  Also known as Source Code Management systems  Increase your productivity by allowing.
CS 160 and CMPE/SE 131 Software Engineering February 16 Class Meeting Department of Computer Science Department of Computer Engineering San José State.
1 CSE 303 Lecture 19 Version control and Subversion ( svn ) slides created by Marty Stepp
It’s not just an insult from Harry Potter!. What is Git? Distributed Version Control System (DVCS) – Compared to a Centralized Version Control System.
Information Systems and Network Engineering Laboratory I DR. KEN COSH WEEK 1.
Technical Presentation by: David Spano. About Git (VCS) Simple Git Commands Branching Github Git GUI Summary.
Git How to 1. Why Git To resolve problems in lab exams (accidental deletions) Use existing Libraries with ease (Statistics and Computer) Prepare undergraduates.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Git A distributed version control system Powerpoint credited to University of PA And modified by Pepper 28-Jun-16.
Jun-Ru Chang Introduction GIT Jun-Ru Chang
GIT Version control. Version Control Sharing code via a centralized DB Also provides for Backtracking (going back to a previous version of code), Branching.
KIT – University of the State of Baden-Wuerttemberg and National Research Center of the Helmholtz Association STEINBUCH CENTRE FOR COMPUTING - SCC
Dr. Tanusri Bhattacharya
CS5220 Advanced Topics in Web Programming Version Control with Git
Introduction to Version Control with Git
Information Systems and Network Engineering Laboratory II
CReSIS Git Tutorial.
Version control with Git
Git Practice walkthrough.
Version Control overview
Version control with Git
Version Control System using Git
Version control with Git
An introduction to version control systems with Git
Distributed Version Control with git
Akshay Narayan git up to speed with RCS Akshay Narayan
An introduction to version control systems with Git
SIG: Open Week 1: GitHub Tim Choh.
An introduction to version control systems with Git
Version control with Git
Version control with Git
Version control with Git
Version control with Git Part II
Version control with Git
Version control with Git
Introduction to Version Control with Git
Version Control with Git
Version Control with Git and GitHub
Version/revision control via git
Git GitHub.
Introduction to The Git Version Control System
CSE 391 Lecture 9 Version control with Git
Presentation transcript:

Git for Version Control These slides are heavily based on slides created by Ruth Anderson for CSE 390a. Thanks, Ruth! images taken from

2 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.)

3 Installing/learning Git Git website: –Free on-line book: –Reference page for Git: –Git tutorial: –Git for Computer Scientists: At command line: (where verb = config, add, commit, etc.) –git help verb

4 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

5 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

6 Git snapshots Centralized VCS like Subversion track version data on each individual file. 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. Subversion Git

7 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. A commit saves a snapshot of all staged state. Unmodified/modified Files Staged Files Committed Files

8 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.

9 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

10 Initial Git configuration Set the name and for Git to use when you commit: –git config --global user.name "Bugs Bunny" –git config --global user. –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)

11 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)

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

13 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.

14 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.

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

16 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

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

18 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

19 GitHub GitHub.com is a site for online storage of Git repositories. GitHub.com –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/edugithub.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).