Git tutorial
 What is GIT?
 Cloning a remote repository
 Creating a repository
 Git config
 Adding remote repository
 GIT trees
 Committing to local repo and pushing commits to remote repo
 Pulling code from remote repo
 Switching working directory to a past commit
 Undoing changes(erasing local commits)
 Merging and Conflict Resolution
 GIT DiffTool and MergeTool
 Git Panoramic View
 Stashing
 Reverting remote repo to previous commit
 GIT-o-LOGY
 Ten Command(ments)
 PUSH/PULL WORKFLOW
 Common Use-Cases
 Git related software
 It is a Distributed Version Control System.
 Developed by Linux Torvalds (Founder of Linux).
 Each developer machine has his/her own local repository to which code can be
committed.
 Code can be committed without an internet connection as repository is local.
 Code commits in local repository can be pushed to remote repository which could
be shared with other developers.
 We could sync our repository with multiple repositories.
 Merging and Branching is seamless.
 It copies the contents from a remote repository to a local repository.
 Navigate to any folder on your file system using GIT CMD.
 Run the following command.
> git clone http://USTR-ERL-5966.na.uis.unisys.com/USFN/git-playground.git
 It essentially copies two folder hierarchies
 .git folder
 project content
 All the git commands work on the “.git” folder. A folder turns into a repository if it
contains “.git” folder.
 All the GIT commands can run only in the folder containing “.git” folder.
 To create a repository on your local system.
 All you have to do is run the following command in the folder where you want
your repository to be created.
> git init
 When you run git init and .git folder is created which indicates that a repository
has been created.
 git init is all you need to put a folder’s content in version control. We are good to
commit code to our local repository now.
 Global Settings
 > git config --global user.name “Gitty Kumar“
 > git config --global user.name “gitkum@gmail.com“
 Project settings
 > git config user.name “Gitty“
 > git config user.email Gitty@gmail.com
 Storing credentials so that we don’t have to type often. Note that password is stored
as plain text in .gitcredentials file.
 > git config –global credential.helper store
 The .gitconfig file is located in .git folder in each local repository and also in the user’s
home directory.
 Generally, when we clone from a particular repository the “origin” alias is set
automatically
> git remote add origin http://IP/path/to/repository
 Also, if we want to change the origin URL, we could do so by the following
command
> git remote set-url origin origin http://IP/path/to/repository
 Working Directory: It holds the actual files which we would be working on. It is
the area where we would be making modifications to the files.
 Staging/Index: It is the staging area which snapshot is prepared. Note that it is a
single file.
 Repository: Maintains a series of committed snapshots.
 GIT follows a two stage commit process.
 First we need to execute git “add” which adds the changes to the staging/index.
> git add . (Add all the files in the current directory to the staging/index area)
 Next we need to execute git “commit” which adds the staged changes to the repository
> git commit –m “Implemented a new feature” (Commits the changes in staging area
to the repository)
 Next we need to push our commits to remote repository by issuing the following
command. Note that origin is an alias for the URL which is stored in .gitconfig and
master is the name of the branch to which we want to push our changes.
> git push origin master
Note: Typically pushing code into repository might not be straight forward and we might
have to follow the push/pull workflow flowchart mentioned in the later slides.
 We have to first fetch the code from the remote repository by issuing the following
command. It gets the code from remote repository but does not affect with our working
directory. It is like a preview of changes which have taken place in remote repository.
> git fetch origin master
 Then run the following command
> git status
 If it says that the branch and origin/master have diverged, it means that we have
different commits in local and remote repository. We need to run the following
command to re-apply our commits on top of the remote commits.
> git rebase origin/master
 If at all, we have no committed changes, then we could use the following command. It
is a called a fast forward merge and no additional commit will be created.
> git merge origin master
Note: Please don’t use “git pull origin master”
 Revert a working directory to a past commit.
> git checkout 1asd9rrtretero
It affects the working directory. It is useful when we want to see build the application from the
code on a past commit. Whenever the above command is run it will put HEAD in a detached
state. When head is in detached state, we should not do any commits. After we check that the
code on a particular commit we can again take the head to a stable state by the following
command.
>git checkout master
 Used to navigate between branches.
> git checkout feature-2
Assuming if there is another branch by name “feature-2”. It affects the working directory. When
we checkout a branch three things happen.
 The HEAD points to the branch’s latest commit.
 Populates the staging/index with the snapshot of the commit.
 Checks out the contents of the file in the staging/index area to the working directory
HEAD is said to be in detached state if it is not pointing to any of the
branches(Ex:master)
 Erases history of commits from the local repository and resets repository to the commit
mentioned in the command. Resets the staging area to the repository. It affects only
the staging area and repository.
> git reset 123asfasdf32434
 Same as the above command but it changes the files in the working directory. After
this command the working directory, staging and repository are in sync
> git reset --hard12sresfasdfs343
 Resetting your working directory to the remote repository’s latest commit. The below is
useful when you have done some wrong changes and want to go back to the remote
repository’s state.
> git reset --hard origin/master
Be cautious when you use reset –hard as your local changes will be overridden.
Never try to run reset –hard on public commits(commits which are pushed to remote repository)
as it might affect other developers and cause confusion.
 What is a merge conflict and when does it happen?
 Whenever there is a difference of commits between our local repo branch and the remote
repository branch there is said to be a merge conflict when we pull code from remote
repository(a.k.a. Upstream.).
For instance
Remote repo might have the following commits (a<-b<-c<-d) “c” being the latest commit
Our local repo might have the following commits (a<-b<-e<-f) with “f” being the latest.
When
At this point when we issue “git pull” there is a merge conflict so git will try to resolve
conflicts automatically but sometimes manually intervention is required in case if the
same file was modified in “c” and “e” commit.
The below command gets the latest changesets from the remote repository and merges
them with code in the working directory. If merging is successful this command executes
successfully else we have to manually merge.
> git pull origin master
 The following are needed to configure the diff tool and mergetool. We would be
using “Meld”.
> git config --global diff.tool meld
> git config --global merge.tool meld
 Ensure that the following lines are added to the .gitconfig of your respective user
directory.
[mergetool "meld"]
cmd = "C:Program Files (x86)MeldMeld.exe" $LOCAL $MERGED
$REMOTE
[difftool "meld"]
cmd = "C:Program Files (x86)MeldMeld.exe" $REMOTE $LOCAL
Git tutorial
 In fact, most of the times, we might have some uncommitted changes and when we try
to issue a “git pull” it fails to do so because of the following error.
“Your local changes to the following files would be overwritten by merge: Please commit or stash them”
At this stage, we might not be interested to commit as we might have not completed
the feature. Instead, we could “stash” which means temporarily saving your work in a
separate place.
Just execute the following command
> git stash
After this you could run
> git pull
Which will execute successfully. Now you must be wondering how to get back those
uncommitted changes. Just issue the below command which will get the uncommitted
changes back to the working directory.
> git stash pop
 The word “revert” has a different meaning in GIT. Let us say we have a series of
commits with “E” being the latest
A<-B<-C<-D<-E<-F
Revert means undoing the changes made by a specific commit. So, if we issue
> git revert D
Whatever changes made by D will be undone. Please note that it does not mean
that the code will be reverted to the D commit.
 HEAD: Generally, HEAD should point to a branch. It can also point to a commit but
then it is called a detached HEAD.
 Branch: It is a pointer to the latest commit. Every GIT repository has a default branch
called “master”.
 Each of the branches are also called as head but uppercase “HEAD” refers to the
current branch.
 Commit: It is a snapshot of the entire repository at the point of commit.
 GIT Trees: There are three trees namely Working Directory, Staging/Index Area and
the Local repository.
 git clone : Used to clone a remote repository
 git add: Used to add files to the staging area.
 git commit: Commits the changes present in the staging area to the local repository.
 git checkout: Used to switch between branches,
 git reset: Erase commits.
 git push: Pushes code commits from local repository to remote repository.
 git pull: Pulls code commits from remote repository to local repository and then
merges code. So the changes are reflected in the working directory. So
PULL=FETCH+MERGE
 git fetch: Pulls code commits from remote to local repository.
 git merge: Merges code from local repository to working directory.
 git revert: Undoes a commit by adding a new commit.
 git stash: Temporarily storing your uncommitted changes
git add .
(Adds the modified files to the staging/index
area)
git commit –m”Message”
(Commits the changes to the local repository)
git push origin master
(Pushes the commit from local repository to the remote
repository’s(origin) “master” branch )
Is Push
successful??
No (Because remote repository
contains changes which we don’t
have)
git fetch origin master
(Fetching commits from remote repository to local repository)
Is rebase
successful??
git rebase origin/master
(It replays your commits on top of remote commits, thereby
maintaining a linear history.)
No(because of
conflicts)
git stash
( Stores your uncommitted changes safely so that
they are not disturbed by rebase/merging)
No (Working directory contains
uncommitted changes)
No (Nothing to rebase)
git merge origin/master
(Merges the changes)
Is merge
successful??
Yes
No
Resolve conflicts manually
Yes
Breathe a sigh of relief…
We are done…
No (Because of merge
conflicts)
Did you execute
git stash before
Yes
git stash pop
( Get the uncommitted changes back to working
directory)
YesNo
Start
 Ensuring that local working directory exactly resembles the remote repository.
Note that your local commits/uncommitted changes will be lost.
> git fetch origin master
> git reset –hard origin/master
 Reverting changes to a particular commit in remote repository. Let us say we have
the following sequence of commits
A<-B<-C<-D<-E with D being the latest commit
Now if we want to take the code to a version B that means we need to undo C,D,E
> git revert C D E
> git push origin master
 GIT supports both CLI (Command Line Interface) namely
 GIT CMD
 and GUI (Graphical User Interface) open source clients namely
 GIT GUI
 Atlassian Source Control
 GIT downloads (contains default CLI and GUI):
 https://git-scm.com/download/win
 Eclipse has a plugin name E-git for issuing git commands within eclipse
 http://www.vogella.com/tutorials/EclipseGit/article.html
 Diff and Merge Tool
 https://download.gnome.org/binaries/win32/meld/3.14/Meld-3.14.0-win32.msi (for
windows)

More Related Content

PPTX
A Brief Introduction to Working with Git
PPTX
Git like a pro EDD18 - Full edition
KEY
Railsconf2011 deployment tips_for_slideshare
PDF
Pulp - Software Repository Management - a brief introduction
PDF
Git workflows automat-it
PDF
RHive tutorial - HDFS functions
DOCX
Rman cloning when both directory and db name are same.
DOC
Arp Dan Ipconfig Syntax
A Brief Introduction to Working with Git
Git like a pro EDD18 - Full edition
Railsconf2011 deployment tips_for_slideshare
Pulp - Software Repository Management - a brief introduction
Git workflows automat-it
RHive tutorial - HDFS functions
Rman cloning when both directory and db name are same.
Arp Dan Ipconfig Syntax

What's hot (19)

PDF
Install and upgrade Oracle grid infrastructure 12.1.0.2
PDF
Koha installation BALID
PDF
Spotify: Automating Cassandra repairs
PPTX
Deployment with Fabric
PPTX
Discovering OpenBSD on AWS
KEY
NWRUG July 2009 - Darcs
PDF
Stacki: Remove Commands
PDF
R hive tutorial - udf, udaf, udtf functions
PPTX
Linux day 3ppt
PDF
Athenticated smaba server config with open vpn
PPTX
Deeper dive in Docker Overlay Networks
PPTX
Deep Dive in Docker Overlay Networks
DOCX
Linux basic commands
PDF
Linea de comandos bioface zem800
PPT
vBACD - Introduction to Opscode Chef - 2/29
PPT
2009 Itc Nslookup Rev01
ODP
Perl in RPM-Land
PDF
Quick and Dirty Python Deployments with Heroku
PPTX
Dns explained
Install and upgrade Oracle grid infrastructure 12.1.0.2
Koha installation BALID
Spotify: Automating Cassandra repairs
Deployment with Fabric
Discovering OpenBSD on AWS
NWRUG July 2009 - Darcs
Stacki: Remove Commands
R hive tutorial - udf, udaf, udtf functions
Linux day 3ppt
Athenticated smaba server config with open vpn
Deeper dive in Docker Overlay Networks
Deep Dive in Docker Overlay Networks
Linux basic commands
Linea de comandos bioface zem800
vBACD - Introduction to Opscode Chef - 2/29
2009 Itc Nslookup Rev01
Perl in RPM-Land
Quick and Dirty Python Deployments with Heroku
Dns explained
Ad

Similar to Git tutorial (20)

PDF
Git training
PPTX
Git learning
PDF
GIT Basics
DOCX
Git github
PDF
Git Commands Every Developer Should Know?
PPSX
Advanced Web Development in PHP - Code Versioning and Branching with Git
PPTX
git github PPT_GDSCIIITK.pptx
PPTX
GIT in a nutshell
PDF
Git and github 101
PPTX
Understanding about git
PDF
How to Really Get Git
PPTX
Hacktoberfest intro to Git and GitHub
PPTX
Git commands
PDF
Git basics for beginners
PDF
Git basics
PDF
Atlassian git cheatsheet
PPTX
Use Git like a pro - condensed
PPTX
Lets Git Together
PDF
Git cheat-sheet 2021
PDF
Git cheat-sheet
Git training
Git learning
GIT Basics
Git github
Git Commands Every Developer Should Know?
Advanced Web Development in PHP - Code Versioning and Branching with Git
git github PPT_GDSCIIITK.pptx
GIT in a nutshell
Git and github 101
Understanding about git
How to Really Get Git
Hacktoberfest intro to Git and GitHub
Git commands
Git basics for beginners
Git basics
Atlassian git cheatsheet
Use Git like a pro - condensed
Lets Git Together
Git cheat-sheet 2021
Git cheat-sheet
Ad

Recently uploaded (20)

PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Architecture types and enterprise applications.pdf
PDF
August Patch Tuesday
PPTX
Web Crawler for Trend Tracking Gen Z Insights.pptx
PPT
Geologic Time for studying geology for geologist
PPTX
Tartificialntelligence_presentation.pptx
PDF
Hybrid model detection and classification of lung cancer
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
DP Operators-handbook-extract for the Mautical Institute
PDF
Getting Started with Data Integration: FME Form 101
PPTX
O2C Customer Invoices to Receipt V15A.pptx
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
Five Habits of High-Impact Board Members
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PPTX
Chapter 5: Probability Theory and Statistics
PDF
STKI Israel Market Study 2025 version august
PDF
A review of recent deep learning applications in wood surface defect identifi...
Univ-Connecticut-ChatGPT-Presentaion.pdf
Group 1 Presentation -Planning and Decision Making .pptx
Architecture types and enterprise applications.pdf
August Patch Tuesday
Web Crawler for Trend Tracking Gen Z Insights.pptx
Geologic Time for studying geology for geologist
Tartificialntelligence_presentation.pptx
Hybrid model detection and classification of lung cancer
A comparative study of natural language inference in Swahili using monolingua...
Enhancing emotion recognition model for a student engagement use case through...
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
DP Operators-handbook-extract for the Mautical Institute
Getting Started with Data Integration: FME Form 101
O2C Customer Invoices to Receipt V15A.pptx
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Five Habits of High-Impact Board Members
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Chapter 5: Probability Theory and Statistics
STKI Israel Market Study 2025 version august
A review of recent deep learning applications in wood surface defect identifi...

Git tutorial

  • 2.  What is GIT?  Cloning a remote repository  Creating a repository  Git config  Adding remote repository  GIT trees  Committing to local repo and pushing commits to remote repo  Pulling code from remote repo  Switching working directory to a past commit  Undoing changes(erasing local commits)  Merging and Conflict Resolution  GIT DiffTool and MergeTool  Git Panoramic View  Stashing  Reverting remote repo to previous commit  GIT-o-LOGY  Ten Command(ments)  PUSH/PULL WORKFLOW  Common Use-Cases  Git related software
  • 3.  It is a Distributed Version Control System.  Developed by Linux Torvalds (Founder of Linux).  Each developer machine has his/her own local repository to which code can be committed.  Code can be committed without an internet connection as repository is local.  Code commits in local repository can be pushed to remote repository which could be shared with other developers.  We could sync our repository with multiple repositories.  Merging and Branching is seamless.
  • 4.  It copies the contents from a remote repository to a local repository.  Navigate to any folder on your file system using GIT CMD.  Run the following command. > git clone http://USTR-ERL-5966.na.uis.unisys.com/USFN/git-playground.git  It essentially copies two folder hierarchies  .git folder  project content  All the git commands work on the “.git” folder. A folder turns into a repository if it contains “.git” folder.  All the GIT commands can run only in the folder containing “.git” folder.
  • 5.  To create a repository on your local system.  All you have to do is run the following command in the folder where you want your repository to be created. > git init  When you run git init and .git folder is created which indicates that a repository has been created.  git init is all you need to put a folder’s content in version control. We are good to commit code to our local repository now.
  • 6.  Global Settings  > git config --global user.name “Gitty Kumar“  > git config --global user.name “[email protected]“  Project settings  > git config user.name “Gitty“  > git config user.email [email protected]  Storing credentials so that we don’t have to type often. Note that password is stored as plain text in .gitcredentials file.  > git config –global credential.helper store  The .gitconfig file is located in .git folder in each local repository and also in the user’s home directory.
  • 7.  Generally, when we clone from a particular repository the “origin” alias is set automatically > git remote add origin http://IP/path/to/repository  Also, if we want to change the origin URL, we could do so by the following command > git remote set-url origin origin http://IP/path/to/repository
  • 8.  Working Directory: It holds the actual files which we would be working on. It is the area where we would be making modifications to the files.  Staging/Index: It is the staging area which snapshot is prepared. Note that it is a single file.  Repository: Maintains a series of committed snapshots.
  • 9.  GIT follows a two stage commit process.  First we need to execute git “add” which adds the changes to the staging/index. > git add . (Add all the files in the current directory to the staging/index area)  Next we need to execute git “commit” which adds the staged changes to the repository > git commit –m “Implemented a new feature” (Commits the changes in staging area to the repository)  Next we need to push our commits to remote repository by issuing the following command. Note that origin is an alias for the URL which is stored in .gitconfig and master is the name of the branch to which we want to push our changes. > git push origin master Note: Typically pushing code into repository might not be straight forward and we might have to follow the push/pull workflow flowchart mentioned in the later slides.
  • 10.  We have to first fetch the code from the remote repository by issuing the following command. It gets the code from remote repository but does not affect with our working directory. It is like a preview of changes which have taken place in remote repository. > git fetch origin master  Then run the following command > git status  If it says that the branch and origin/master have diverged, it means that we have different commits in local and remote repository. We need to run the following command to re-apply our commits on top of the remote commits. > git rebase origin/master  If at all, we have no committed changes, then we could use the following command. It is a called a fast forward merge and no additional commit will be created. > git merge origin master Note: Please don’t use “git pull origin master”
  • 11.  Revert a working directory to a past commit. > git checkout 1asd9rrtretero It affects the working directory. It is useful when we want to see build the application from the code on a past commit. Whenever the above command is run it will put HEAD in a detached state. When head is in detached state, we should not do any commits. After we check that the code on a particular commit we can again take the head to a stable state by the following command. >git checkout master  Used to navigate between branches. > git checkout feature-2 Assuming if there is another branch by name “feature-2”. It affects the working directory. When we checkout a branch three things happen.  The HEAD points to the branch’s latest commit.  Populates the staging/index with the snapshot of the commit.  Checks out the contents of the file in the staging/index area to the working directory HEAD is said to be in detached state if it is not pointing to any of the branches(Ex:master)
  • 12.  Erases history of commits from the local repository and resets repository to the commit mentioned in the command. Resets the staging area to the repository. It affects only the staging area and repository. > git reset 123asfasdf32434  Same as the above command but it changes the files in the working directory. After this command the working directory, staging and repository are in sync > git reset --hard12sresfasdfs343  Resetting your working directory to the remote repository’s latest commit. The below is useful when you have done some wrong changes and want to go back to the remote repository’s state. > git reset --hard origin/master Be cautious when you use reset –hard as your local changes will be overridden. Never try to run reset –hard on public commits(commits which are pushed to remote repository) as it might affect other developers and cause confusion.
  • 13.  What is a merge conflict and when does it happen?  Whenever there is a difference of commits between our local repo branch and the remote repository branch there is said to be a merge conflict when we pull code from remote repository(a.k.a. Upstream.). For instance Remote repo might have the following commits (a<-b<-c<-d) “c” being the latest commit Our local repo might have the following commits (a<-b<-e<-f) with “f” being the latest. When At this point when we issue “git pull” there is a merge conflict so git will try to resolve conflicts automatically but sometimes manually intervention is required in case if the same file was modified in “c” and “e” commit. The below command gets the latest changesets from the remote repository and merges them with code in the working directory. If merging is successful this command executes successfully else we have to manually merge. > git pull origin master
  • 14.  The following are needed to configure the diff tool and mergetool. We would be using “Meld”. > git config --global diff.tool meld > git config --global merge.tool meld  Ensure that the following lines are added to the .gitconfig of your respective user directory. [mergetool "meld"] cmd = "C:Program Files (x86)MeldMeld.exe" $LOCAL $MERGED $REMOTE [difftool "meld"] cmd = "C:Program Files (x86)MeldMeld.exe" $REMOTE $LOCAL
  • 16.  In fact, most of the times, we might have some uncommitted changes and when we try to issue a “git pull” it fails to do so because of the following error. “Your local changes to the following files would be overwritten by merge: Please commit or stash them” At this stage, we might not be interested to commit as we might have not completed the feature. Instead, we could “stash” which means temporarily saving your work in a separate place. Just execute the following command > git stash After this you could run > git pull Which will execute successfully. Now you must be wondering how to get back those uncommitted changes. Just issue the below command which will get the uncommitted changes back to the working directory. > git stash pop
  • 17.  The word “revert” has a different meaning in GIT. Let us say we have a series of commits with “E” being the latest A<-B<-C<-D<-E<-F Revert means undoing the changes made by a specific commit. So, if we issue > git revert D Whatever changes made by D will be undone. Please note that it does not mean that the code will be reverted to the D commit.
  • 18.  HEAD: Generally, HEAD should point to a branch. It can also point to a commit but then it is called a detached HEAD.  Branch: It is a pointer to the latest commit. Every GIT repository has a default branch called “master”.  Each of the branches are also called as head but uppercase “HEAD” refers to the current branch.  Commit: It is a snapshot of the entire repository at the point of commit.  GIT Trees: There are three trees namely Working Directory, Staging/Index Area and the Local repository.
  • 19.  git clone : Used to clone a remote repository  git add: Used to add files to the staging area.  git commit: Commits the changes present in the staging area to the local repository.  git checkout: Used to switch between branches,  git reset: Erase commits.  git push: Pushes code commits from local repository to remote repository.  git pull: Pulls code commits from remote repository to local repository and then merges code. So the changes are reflected in the working directory. So PULL=FETCH+MERGE  git fetch: Pulls code commits from remote to local repository.  git merge: Merges code from local repository to working directory.  git revert: Undoes a commit by adding a new commit.  git stash: Temporarily storing your uncommitted changes
  • 20. git add . (Adds the modified files to the staging/index area) git commit –m”Message” (Commits the changes to the local repository) git push origin master (Pushes the commit from local repository to the remote repository’s(origin) “master” branch ) Is Push successful?? No (Because remote repository contains changes which we don’t have) git fetch origin master (Fetching commits from remote repository to local repository) Is rebase successful?? git rebase origin/master (It replays your commits on top of remote commits, thereby maintaining a linear history.) No(because of conflicts) git stash ( Stores your uncommitted changes safely so that they are not disturbed by rebase/merging) No (Working directory contains uncommitted changes) No (Nothing to rebase) git merge origin/master (Merges the changes) Is merge successful?? Yes No Resolve conflicts manually Yes Breathe a sigh of relief… We are done… No (Because of merge conflicts) Did you execute git stash before Yes git stash pop ( Get the uncommitted changes back to working directory) YesNo Start
  • 21.  Ensuring that local working directory exactly resembles the remote repository. Note that your local commits/uncommitted changes will be lost. > git fetch origin master > git reset –hard origin/master  Reverting changes to a particular commit in remote repository. Let us say we have the following sequence of commits A<-B<-C<-D<-E with D being the latest commit Now if we want to take the code to a version B that means we need to undo C,D,E > git revert C D E > git push origin master
  • 22.  GIT supports both CLI (Command Line Interface) namely  GIT CMD  and GUI (Graphical User Interface) open source clients namely  GIT GUI  Atlassian Source Control  GIT downloads (contains default CLI and GUI):  https://git-scm.com/download/win  Eclipse has a plugin name E-git for issuing git commands within eclipse  http://www.vogella.com/tutorials/EclipseGit/article.html  Diff and Merge Tool  https://download.gnome.org/binaries/win32/meld/3.14/Meld-3.14.0-win32.msi (for windows)