![Page 1: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/1.jpg)
Advance Gitby Rajesh Kumar
http://www.scmgalaxy.com/
![Page 2: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/2.jpg)
Rajesh KumarDevOps Architect
@RajeshKumarIN | www.RajeshKumar.xyz
About me
2www.scmGalaxy.com
![Page 3: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/3.jpg)
History
• Source Code Control Systems (SCCS)
– 1972, Closed Source, free with Unix
• Revision Control System (RCS)
– 1982, Open Source
• Concurrent Version System (CVS)
– 1986-1990, open source
• Apache Subversion (SVN)
– 2000, Open Source
![Page 4: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/4.jpg)
BitKeeper SCM
– 2000, closed source, proprietry
– Distributed version control
– “community version” was free
– used for source code of the Linux Kernal from 2002-2005
– Controversial to use proprietary SCM for an open source project
– April – 2005 – The community version not free any more
![Page 5: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/5.jpg)
Git is born
• April 2005
• Created by Linus Torvalds
• Replacement for bitKeeper to manage Linux Kernal source code
![Page 6: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/6.jpg)
Git is Popular
• Distributed Version Control
• Open source and free software
• Compatible with Unix-like Systems (Linux, Mac OSX, and Solaris) and Windows
• Faster than other SCMs (100x in some cases)
![Page 7: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/7.jpg)
Git is a hit
• Explosion in Popularity
• No official statics
• GitHub is launched in 2008 to host Gitrepositories
– 2009: over 50,000 repositories, over 100,000 users
– 2011: over 2 million repository's, over 1 million users
![Page 8: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/8.jpg)
Programmers and Developers
• HTML, CSS, JavaScript
– PHP, Ruby, Ruby on railes, Perl Python, ASP
– Java, C, C++, C#, Objective C
– Action Script, Coffee Script, Haskell, Scala, Shell Scripts
• Not as useful for tracking non-text files
– Image, movies, music, fonts
– Word processing files, spreadsheets, PDFs
![Page 9: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/9.jpg)
The Git Repository
• .git directory– Config – Repo private configuration file (.ini style)– Description – Repo description– Hooks/* - hooking scripts– Objects/* - The object repository– Refs/heads/* - branches (like “master”)– Refs/tags/* - tags– Refs/remotes/* - tracking others– Logs/* - logs– Index – changes to commit– HEAD – points to one of the branches (the “current
branch”, where commits go)
![Page 10: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/10.jpg)
Objects
• Every object has a SHA1 to uniquely identify it• Objects consist of 4 types:
– Blobs (the contents of a file)– Trees (directories of blobs or other trees)– Commits
• A Tree• Plus zero or more parent commits
– Tags• An object (usually a commit)
A SHA-1 hash value is typically rendered as a hexadecimal number, 40 digits long.SHA-1 produces a 160-bit (20-byte) hash value
![Page 11: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/11.jpg)
Configuring Git
• System
– /etc/gitconfig
– Program file\git\etc\gotconfig
• User
– ~/.gitconfig
– $HOME\.gitconfig
• Project
– my_project/.git/config
![Page 12: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/12.jpg)
Configuring Git…
• System
– git config --system
• User
– git config --global
• Project
– git config
![Page 13: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/13.jpg)
Configuring Git…
• git config --global user.name "rajesh kumar"
• git config --global user.email [email protected]
• git config --list
• more .gitconfig
• git config --global core.editor "vim“
• git config --global color.ui true
![Page 14: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/14.jpg)
• git config --list
• git config --global section.key
• git config --global section.subsection.key
• git config --global user.name "rajesh kumar"
• git config --global user.email
• git config --global core.editor "vim“
• git config --global color.ui true
Configuring Git…
![Page 15: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/15.jpg)
git Config Priorities
Lowest•/etc/gitconfig
•~/.gitconfig
Highest•.git/config
![Page 16: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/16.jpg)
git workflow
• Working with local repos– git init
• Creates a .git in the current dir
– git add <directory tree>• Adds all files (except .git)
– git commit• Commits the changes (in this case initial commit)• Creates a branch named master• HEAD points at master
• Working with Remote Repos– git clone
• Creates a git repo from an existing repo• All remote branches are tracked• Remote HEAD branch checked out as your initial master branch as well
– git pull– git push
![Page 17: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/17.jpg)
Git workflow
![Page 18: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/18.jpg)
Head
• Pointer to “tip” of the current branch in repository
• Last state of repository, what was last checked out
• Points to parent next commit
– Where writing commits takes place
![Page 19: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/19.jpg)
SCM Operations
• Bootstrap– Init
– Checkout
– Switch branch
• Modify– Add, delete, rename
– Commit
• Information– Status
– Diff
– Log
• Reference– Tag
– Branch
• Collaborate– Clone
– Pull, fetch
– push
![Page 20: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/20.jpg)
Git Help
git help (list of common commands)
git <command> -h
Manual pageman git <command>
git help <command>
git <command> --help
![Page 21: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/21.jpg)
git add .
git add . only adds what is there, not what has been deleted (if tracked).
git add .
git add -A would take care of both steps...
![Page 22: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/22.jpg)
Referring to commits
When we submit any changes to the repository,
• Git generate a checksum for each change set– Checksum algorithm convert data into a simple number
– Same data always equals same checksum
• Data Integrity is fundamental– Changing data would change checksum
• Git uses SHA-1 hash algorithm to create checksums– 40 character hexadecimal string (0-9,a-f)
– Example: 1837f0b7056c64cef103210b07539b6313612ba3
![Page 23: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/23.jpg)
![Page 24: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/24.jpg)
Commit Message best practices
• Short single-line summary (less than 50 characters)
• Optionally followed by a blank line and a more complete description
• Keep each line to less than 72 characters
• Write a commit messages in present tense, not past tense
– “fix bugs” or “fixes bug”, not “fixed bug”
![Page 25: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/25.jpg)
Commit Message best practices
• Bullets points are usually asterisks or hypens
• Can add “ticket tracking numbers” from bugs or support requests
• Can develop shorthand for your organization
– “*css,js+ ”
– “bugfix: ”
– “#24223 - ”
![Page 26: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/26.jpg)
Commit Message best practices
• Be clear and descriptive
– Bad: “Fix typo”
– Good: “Add missing > in project section of HTML
– Bad: “Update login code”
– Good: “Change user authentication to use Blowfish”
– Bad: “Updates member report, we should discuss if this is right next week”
![Page 27: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/27.jpg)
git log
commit 1837f0b7056c64cef103210b07539b6313612ba3
Author: rajesh kumar <[email protected]>
Date: Thu Dec 6 01:16:03 2012 -0800
first commit
git log --oneline
git log --oneline --graph
git log --format=short == git shortlog
git log file1 file2 dir3
Show changes only for listed files or subdirs
![Page 28: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/28.jpg)
git log
• git log –n 1/2/3/0• git log --since=2012-05-05• git log --until=2012-04-23• git log --grep=“init”
See the log pof remote reposgit fetch origingit log origin/master Eq. togit log HEAD..origin/master
![Page 29: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/29.jpg)
Head
• Pointer to “tip” of the current branch in repository
• Last state of repository, what was last checked out
• Points to parent next commit
– Where writing commits takes place
![Page 30: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/30.jpg)
HEAD
![Page 31: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/31.jpg)
HEAD
![Page 32: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/32.jpg)
HEAD Commands
> git log HEADshows all the commits reachable from the current HEAD
> git showThe git show command reports the changes introduced by the most recent commit:
> git show HEAD~> git show HEAD~2
Behind The Scenes: Where Is The HEAD?The contents of the git HEAD variable is stored in a text file in the .git/HEAD:
> cat .git/HEADref: refs/heads/masterThat is telling us that we need to look at the file refs/heads/master in the .git directory to find out where HEAD points:
![Page 33: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/33.jpg)
Undoing the changes
• git checkout
• git revert – Undo the commits with new commits.
• git clean - removes untracked files from your working directory.
• git reset - It modifies the index (the so-called "staging area") Or it changes which commit a branch head is currently pointing at.
![Page 34: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/34.jpg)
git checkout
The git checkout command serves three distinct functions:
1. checking out files,
2. checking out commits, and
3. checking out branches.
![Page 35: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/35.jpg)
git checkout
> git checkout <commit> <file>
Check out a previous version of a file. This turns the <file> that resides in the working directory into an exact copy of the one from <commit> and adds it to the staging area.
![Page 36: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/36.jpg)
git checkout
> git checkout <commit>
Update all files in the working directory to match the specified commit.
![Page 37: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/37.jpg)
git checkout
> git checkout master
![Page 38: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/38.jpg)
git revert
The git revert command undoes a committed snapshot. But, instead of removing the commit from the project history, it figures out how to undo the changes introduced by the commit and appends a new commit with the resulting content.
This prevents Git from losing history, which is important for the integrity of your revision history and for reliable collaboration.
![Page 39: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/39.jpg)
git clean
> git clean -n
Perform a “dry run” of git clean.
> git clean -f
Remove untracked files from the current directory.
> git clean -df
Remove untracked files and untracked directories from the current directory.
![Page 40: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/40.jpg)
git reset
git revert is a “safe” way to undo changes, whereas git reset as the dangerous method.
When you undo with git reset(and the commits are no longer referenced by any ref or the reflog), there is no way to retrieve the original copy—it is a permanent undo.
![Page 41: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/41.jpg)
In Practice
It can be used to remove committed snapshots, although it’s more often used to undo changes in the staging area and the working directory. In either case, it should only be used to undo local changes—you should never reset snapshots that have been shared with other developers.
![Page 42: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/42.jpg)
git reset
> git reset <file>
Remove the specified file from the staging area, but leave the working directory unchanged. This unstages a file without overwriting any changes.
![Page 43: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/43.jpg)
git reset
> git reset
Reset the staging area to match the most recent commit, but leave the working directory unchanged. This unstages all files without overwriting any changes, giving you the opportunity to re-build the staged snapshot from scratch.
![Page 44: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/44.jpg)
git reset
> git reset --hard
Reset the staging area and the working directory to match the most recent commit. In addition to unstaging changes, the --hard flag tells Git to overwrite all changes in the working directory, too.
![Page 45: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/45.jpg)
git resetA dangerous method
Three kinds of reset1. soft
– Moves the head– git reset --soft 34dghsd
2. Mixed– Changes HEAD and Staging Index– git reset –mixed eb45juh
3. Hard– Reverts completely back to commit– git reset --hard fg4533df
![Page 46: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/46.jpg)
SOFT RESET
![Page 47: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/47.jpg)
SOFT RESET
![Page 48: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/48.jpg)
MIXED RESET (Default)
![Page 49: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/49.jpg)
MIXED RESET (Default)
![Page 50: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/50.jpg)
HARD Reset
![Page 51: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/51.jpg)
HARD Reset
![Page 52: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/52.jpg)
Renaming the file
> git mv <filename>
> git commit -m”renaming file"
![Page 53: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/53.jpg)
Deleting the file
git rm file1.txt
git commit -m "remove file1.txt"
![Page 54: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/54.jpg)
git diff
• git diff SHA1…SHA2
• git diff HEAD~1..HEAD
• git diff HEAD~1..
• git diff branch1 branch2
• git diff anotherbranch
• git diff --staged
![Page 55: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/55.jpg)
git branching
• git checkout –b
• git branch <branchname>
• Find .git/refs – To knw the branches
• Delete Branch
– git branch -D <branchname>
![Page 56: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/56.jpg)
git branching
• git checkout –b = git branch + git checkout
![Page 57: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/57.jpg)
git merge
> git merge <branch>
![Page 58: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/58.jpg)
Working with remote repository
• Scenario 1 – Start from Local repository
• Scenario 2 – Start from Remote repository
• Scenario 3 – Mixed approach
![Page 59: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/59.jpg)
Remotes Repository
• git remote – List of remotes connections
• git remove -v “
• git remote add <alias> <url>
• git remote rm <alias>
• git remote rename <old-name> <new-name>
![Page 60: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/60.jpg)
Start from Existing repository
• git init
• git remote add <name> url
• git push
![Page 61: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/61.jpg)
Start from Remote repository
• git clone
• git push
• git pull (or git fetch + git merge)
![Page 62: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/62.jpg)
Mixed approach
• git init
• git remote add <name> url
• git pull (or git fetch + git merge)
• git push
![Page 63: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/63.jpg)
get fetch
git-fetch - Download objects and refs from another repository
• Fetch before work
• Fetch before you push
• Fetch often
• git fetch
• git fecth origin
![Page 64: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/64.jpg)
git pull
== git fetch + git merge
Pull Vs Clone
• Clone: Get a working copy of the remote repository.
• Pull: I am working on this, please get me the new changes that may be updated by others and merge it.
![Page 65: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/65.jpg)
Appendix - Delete remote depots
• git push origin nontracking:nontracking
• git push origin :nontracking
• git push origin –delete nontracking
![Page 66: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/66.jpg)
.gitignore
![Page 67: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/67.jpg)
Appendix - git reflog
![Page 68: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/68.jpg)
Questions
• How Git store the changes?• How to Commit Single file?• I could not understand git log output?• How Git workflow works?• what is git reset?• How to undo the changes?• Clone Vs Pull Vs Fetch• How to delete Local branch?• How to delete Remote Branch?• What is bare git repo
![Page 69: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/69.jpg)
Delete remote depots
• git push origin nontracking:nontracking
• git push origin :nontracking
• git push origin –delete nontracking
![Page 70: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/70.jpg)
Appendix - Pull Vs Rebase
• Pull fetch + merge with master
• Rebase -> fecth + Checkout and make master of master + merge with local
![Page 71: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/71.jpg)
Types of Merge
• Fast Forward Merge
• Recursive Merge aka 3 Way merge
![Page 72: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/72.jpg)
Fast Forward Merge
![Page 73: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/73.jpg)
> No New Commits on Master
![Page 74: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/74.jpg)
![Page 75: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/75.jpg)
Three way merge=recursive merge
![Page 76: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/76.jpg)
Three way merge=recursive merge
![Page 77: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/77.jpg)
Three way merge
![Page 78: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/78.jpg)
Rebasing
![Page 79: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/79.jpg)
Rebase
![Page 80: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/80.jpg)
![Page 81: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/81.jpg)
Merged without rebase
![Page 82: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/82.jpg)
Merged with rebase
![Page 83: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/83.jpg)
Git rebase testing branch
git rebase master
git checkout master
git merge testing
![Page 84: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/84.jpg)
DO NOT
• Never rebase a branch which you made public available
![Page 85: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/85.jpg)
Rebase
• Rewrites commits as if they started in a different place• Breaks SHA1s: commits are lost
– Don’t rebase if you have published commits
• git rebase master topic2– All changes in topic2 but not in master are rewritten as
changes to the new master
• May result in merge conflicts– git rebase –continue or –abort or –skip
• git rebase –i (interactive) is helpful• When rebased, merge is a fast forward
– git checkout master; git merge topic2
![Page 86: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/86.jpg)
Reference
• http://git-scm.com/
• http://gitref.org/
• www.git-tower.com
• https://github.com/
• http://www.git-tower.com/
• http://git-scm.com/bookhttps://www.youtube.com/watch?v=ZDR433b0HJY
![Page 87: Advance Git by Rajesh Kumar - DevOpsSchool Complete Guide.pdf · BitKeeper SCM –2000, closed source, proprietry –Distributed version control –“community version” was free](https://reader034.vdocuments.net/reader034/viewer/2022051600/5a8700a87f8b9a9f1b8d7d33/html5/thumbnails/87.jpg)
Appendix