Home » Software Development » Top Git Commands With Examples

About Venkatesh Nukala

Venkatesh Nukala
Venkatesh Nukala is a Software Engineer working for Online Payments Industry Leading company. In my free time, I would love to spend time with family and write articles on technical blogs. More on JavaProgramTo.com

Top Git Commands With Examples

A quick guide to how to use git commands and what are the top command that used by every developer in their daily life.

1. Introduction

In this tutorial, You’ll learn what are the git commands that can be used in everyday life. You’ll see the top git commands with examples. You can not imagine a developer’s life without using version control tools such as git, bitbucket, or any tool.

Because this makes like simple and easy to maintain the programming files and collaborate with your teammates.

Most of you do not use git commands either you use GUI plugins in IDE eclipse or Intelleji tools

But, if you know all these handy command and you will get confidence in dealing with the conflicts resolving manually from the terminal.
Git Tutorials

2. Handy Git Commands

Git Commands: Let us see what are the commands that are mostly used from the terminal or command prompt such as git bash in windows. At least the following should be known by all developers and most used in the software industry. We’ll discuss one by one from scratch.

Git Commands List:

  • git config
  • git init
  • git clone
  • git help
  • git status
  • git add
  • git branch
  • git commit
  • git push
  • git pull
  • git checkout
  • git stash
  • git merge
  • git reset
  • git remote
  • git diff
  • git rm
  • git log
  • git show
  • git tag

3. Git Config Command With Example

This is the most important one but this is used only once when you join the new company or get a new laptop in the office. This is only a one-time job but if you want to change at any time such as name, email address using the “git config” command as below.

Names, email values can be set at the global, system, or user level.

Example Commands to set the user name and email address.

git config –global <property-name> <value>

git config –global user.name “JavaProgramTo.com”

git config –global user.email “admin@javaprogramto.com”

01
02
03
04
05
06
07
08
09
10
11
$ git config --global user.name "JavaProgramTo.com"
  
$ git config --global user.email "admin@javaprogramto.com"
  
$ git config --global user.email 
  
admin@javaprogramto.com
  
$ git config --global user.name
  
JavaProgramTo.com

To see all the user configurations have been set in your machine use the “
git config –list  | grep ‘user’

git config –list  | grep ‘user’ 

user.email=admin@javaprogramto.com

user.name=JavaProgramTo.com

4. Git Init Command With Example

“git init” is to convert a project into a git project. To see the current folder is under git or not using git status command or if the “.git” folder is present in the root directory it is git project.

If not a git project, just run the “git init” command at the root folder to convert into a git project.

git init

$ pwd/Users/Documents/workspace/git-demo$ git statusfatal: not a git repository (or any of the parent directories): .git$ ls -a.  ..  file1.txt$ git initInitialized empty Git repository in /Users/Documents/workspace/git-demo/.git/$ ls -a.  ..  .git  file1.txt$ git statusOn branch master


No commits yet


Untracked files:
  (use "git add <file>..." to include in what will be committed)


 file1.txt


nothing added to commit but untracked files present (use "git add" to track)

5. Git clone Command Example

If you want to clone any repo from GitHub or bitbucket or remote location then use ‘git clone “repo location”‘

git clone <remote-repo-location>

$ git clone https://github.com/JavaProgramTo/CoreJava.git
Cloning into 'CoreJava'...
remote: Enumerating objects: 97, done.
remote: Counting objects: 100% (97/97), done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 97 (delta 14), reused 95 (delta 12), pack-reused 0
Unpacking objects: 100% (97/97), done.
$

And also you can clone into a new folder. Here CoreJava git repo will be cloned into a new folder core-java-tutorials

$ git clone https://github.com/JavaProgramTo/CoreJava.git core-java-tutorials
Cloning into 'core-java-tutorials'...
remote: Enumerating objects: 97, done.
remote: Counting objects: 100% (97/97), done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 97 (delta 14), reused 95 (delta 12), pack-reused 0
Unpacking objects: 100% (97/97), done.
$ls
CoreJava  core-java-tutorials file1.txt

6. Git Help Command Example

If you don’t know much about any command then. use “git help <command-name>” it pulls syntax and all its options.

git help <command-name>

$ git help init

It displays into a new editor as below and press ‘q’ to come out to the terminal.

7. Git Status Command Example

To see the list of files are modified and added to the stage in the current directory. And also show the current branch name.

git status

$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

 CoreJava/
 core-java-tutorials/
 file1.txt

nothing added to commit but untracked files present (use “git add” to track)

8. Git Add Command Example

‘git add’ command to add new files or existing modified files to the git stage. This works from current directory.

After ‘git add’ command execution, files will be moved from untracked files to ” changes to be committed

git add <file-1-name>

$ git add file1.txt 

$ git status

On branch master

No commits yet

Changes to be committed:

  (use “git rm –cached <file>…” to unstage)

new file:   file1.txt

Untracked files:

  (use “git add <file>…” to include in what will be committed)

CoreJava/

core-java-tutorials/

Even you can add multiple files by delimiting the file names with space or use
‘*’ to add all files to the stage.

git add <file-1-name> <file-2-name>

for

git add *

9. Git Commit Command Example

‘git commit’ command commit the files in stage area (Changes to be committed section) and creates a new commit id for this commit.

But these files are now not available on the git. At this stage, all files are on in your local machine as now.

git commit -m <commit-name>

$ git commit -m 'first commit'
[master (root-commit) 8dbddf5] first commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 file1.txt
Venkateshs-MacBook-Pro-2:git-demo venkateshn$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

 CoreJava/
 core-java-tutorials/

nothing added to commit but untracked files present (use “git add” to track)

10. Git push Command Example

After commit, use the ‘git push‘ command to move your changes to a remote repo that means from where repo is created.

git push 

git push origin <branch-name> -> pusing the changes to a specific branch

git push -all –> pushing all branch changes to remote git.

$ git push

11. Git Pull Command Example

If you have other changes those are committed by your teammate and to get the latest changes to use ‘
git pull‘ command.

git pull -> pulls from the current branch

git pull <repo-url> -> pull change from the given repo

$ git pull

12. Git Branch Command Example

To see all branches under this repo, use ‘git branch’

git branch

$ git branch

* master

develop

To see, all the remote branches using ‘git branch -r

git branch -r -> to see remote branches

git branch <new-branch> release -> to create a new branch from release branch.

13. Git Checkout Command Example

If you have modified the file in local repo and you want to replace all the changes with the remote file, use ‘git checkout <file-name>

$git checkout file1.txt

14. Git Stash Command Example

If you modified files in your local and do not want to commit immediately then use ‘
git stash‘.

Now, modified files will be shown in the ‘git status’ command.

$ vi file1.txt 
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

 modified:   file1.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

 CoreJava/
 core-java-tutorials/

no changes added to commit (use "git add" and/or "git commit -a")
$ git stash
Saved working directory and index state WIP on master: 8dbddf5 first commit
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

 CoreJava/
 core-java-tutorials/

nothing added to commit but untracked files present (use "git add" to track)

nothing added to commit but untracked files present (use “git add” to track)

Added again some files to git stash. ‘save’ is optional and by defaults it does save.

$git stash save

To see all the commits in the git stash use ‘git stash list’

$ git stash list
stash@{0}: WIP on master: 8dbddf5 first commit
stash@{1}: WIP on master: 8dbddf5 first commit

To get the latest changes from stash to stage, usegit stash pop.

$ git stash pop
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

 modified:   file1.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

 CoreJava/
 core-java-tutorials/
 file2.txt

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (9faef149414d5c6ab7047ed493c77a3b444e04e6)

Now see the list of all commits in the stash with the command git stash list’

$ git stash list
stash@{0}: WIP on master: 8dbddf5 first commit

15. Git Branch Command Example

git branch‘ command list all branches available in this repo.

This shows all branches untill your last ‘git pull‘. After, it pulls if any new branches created on the remote branch, and those can not be seen from the local branch.

$ git branch
  develop
* master

To see only remote branches use “git branch -r” and use “git branch -a” to all remote and local branches.

$ git branch -r
  origin/dummy
  origin/master
$ git branch -a
  develop
* master
  remotes/origin/dummy
  remotes/origin/master
$ git branch
  develop
* master

16. Git Merge Command Example

If you want to merge another branch to the current branch then use the ‘
git merge‘ command.

Making the changes to develop branch and merging develop branch changes to the master branch.

$ git status
On branch develop
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

 modified:   file1.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

 CoreJava/
 core-java-tutorials/
 file2.txt

Venkateshs-MacBook-Pro-2:git-demo venkateshn$ git commit -m 'added line 2'
[develop 17569dd] added line 2
 1 file changed, 3 insertions(+)

Merging develop branch commits into the master branch.

git merge develop -> merges the changes of develop branch into the current branch.

$ git checkout master
Switched to branch 'master'
$ git merge develop
Updating 8dbddf5..17569dd
Fast-forward
 file1.txt | 3 +++
 1 file changed, 3 insertions(+)

17. Git Log Command Example

To see all the commits version history in any branch or current branch, use
git logcommand.

$ git log
commit 94c3fcb44b57cc13a3bdadaabe708e1d0e38a16e (HEAD -> master)
Author: JavaProgramTo.com <admin@javaprogramto.com>
Date:   Sun May 10 22:24:55 2020 +0530

    adding file2

commit 17569dd273defd6ef7a4de554f20a966504fa629 (develop)
Author: JavaProgramTo.com <admin@javaprogramto.com>
Date:   Sun May 10 22:17:12 2020 +0530

    added line 2

commit 8dbddf5a2a5d2c4d14ceec7a4ea74db994b8dd10
Author: JavaProgramTo.com <admin@javaprogramto.com>
Date:   Sun May 10 21:21:42 2020 +0530

    first commit

By default, the ‘git log‘ command shows all the commits for the current branch but it provides different flags to do specific set of operations.

To see the file commits for a specific file then use ‘
git log –follow <file-name>

To see the commits for file1.txt

$ git log --follow  file1.txt 
commit 17569dd273defd6ef7a4de554f20a966504fa629 (develop)
Author: JavaProgramTo.com <admin@javaprogramto.com>
Date:   Sun May 10 22:17:12 2020 +0530

    added line 2

commit 8dbddf5a2a5d2c4d14ceec7a4ea74db994b8dd10
Author: JavaProgramTo.com <admin@javaprogramto.com>
Date:   Sun May 10 21:21:42 2020 +0530

    first commit

To see all the commits for file2.txt

$ git log --follow  file2.txt 
commit 94c3fcb44b57cc13a3bdadaabe708e1d0e38a16e (HEAD -> master)
Author: JavaProgramTo.com <admin@javaprogramto.com>
Date:   Sun May 10 22:24:55 2020 +0530

    adding file2

18. Git Diff Command Example

To see the difference among the modified files with remote files using
git diff‘ command.

$ git diff
diff --git a/pom.xml b/pom.xml
index f47e51e..8702bb4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
        </properties>

        <dependencie
-
+               <!-- spring boot dev tools-->
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-devtools</artifactId>

Now, add the modified file to git.

$ git add pom.xml 
$ git diff
$

Now, git diff does not show the differences but still, you can see the diff wit flag ‘–staged‘.

git diff –staged

$ git diff --staged
diff --git a/pom.xml b/pom.xml
index f47e51e..8702bb4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
        </properties>

        <dependencie
-
+               <!-- spring boot dev tools-->
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-devtools</artifactId>

Another interesting way to see the differences between the two branches.

$git diff master develop

19. Git Reset Command Example

To remove the file from stage and file should be in the local system.

Look at the in-depth article on “git reset and git rm” commands to unstage a file.

Syntax: git reset <file-name>

$ git reset file1.txt

To unstage and remove all the files from a specific commit. But, all the files from this commit will remain as modified in the local machine.

git reset <commit-id>

$ git reset 6873c7a6c1135b3a977c9d14404e0fd652f566a8

Unstaged changes after reset:

M pom.xml

To discard all the changes from a commit and goes back to the specific commit.

$ git reset --hard 8dbddf5a2a5d2c4d14ceec7a4ea74db994b8dd10
HEAD is now at 8dbddf5 first commit
$ ls
CoreJava  core-java-tutorials file1.txt
$ 

After resetting to the first commit, we are not seeing the file2.txt in the local file system. Because, if you use a ‘hard‘ flag then it removes all history of the files.

You must be careful when running git commands with a ‘hard‘ flag.

20. Git Rm Command Example

This command deletes the file from your current local working directory and from the stage as well. Once you do commit and push then file will be removed from git repo permanently.

If you do not use any flag thengit rm command just remove the file.

$ ls
CoreJava  core-java-tutorials file1.txt
$ git rm file1.txt 
rm 'file1.txt'
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

 deleted:    file1.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

 CoreJava/
 core-java-tutorials/

$ls
$

‘git rm’ command does not work with the staged file and works on only committed files.

Created now a new file3.txt and added to git. Then tried to remove using file3.txt file with ‘git rm file3.txt‘. This result in error saying use‘–cached’ or ‘-f’ flag.

$ git rm file3.txt 
error: the following file has changes staged in the index:
    file3.txt
(use --cached to keep the file, or -f to force removal)
$

“–cached” flag is used to remove the file from staging and reserves the changes.

$ git rm --cached file3.txt 
rm 'file3.txt'

$ git status
On branch master
Changes to be committed:

Untracked files:
  (use "git add <file>..." to include in what will be committed)
 file3.txt

git rm -f file3.txt – Just deleted the file from local machine.

$ git add file3.txt 
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

 deleted:    file1.txt
 new file:   file3.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

 CoreJava/
 core-java-tutorials/


$ git rm -f file3.txt 
rm 'file3.txt'
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
Untracked files:
  (use "git add <file>..." to include in what will be committed)

$

21. Git Tag Command Example

This command is used to give tags to the specified commit.

git tag <commit-d>

$ git tag 8dbddf5a2a5d2c4d14ceec7a4ea74db994b8dd10
$ git tag 
8dbddf5a2a5d2c4d14ceec7a4ea74db994b8dd10

‘git tag’ command to see all the tags for a branch.

22. Git Show Command Example

git show” command shows the files metadata sections of contents changed in the commit. By default, it shows the result for the latest commit from the ‘git log‘ command.

$ git show
commit 68c7e111b3995a5104b1651550f29874733f2a96 (HEAD -> master, tag: 8dbddf5a2a5d2c4d14ceec7a4ea74db994b8dd10)
Author: JavaProgramTo.com <admin@javaprogramto.com>
Date:   Sun May 10 22:51:59 2020 +0530

    file one modified

diff --git a/file1.txt b/file1.txt
index e69de29..b806426 100644
--- a/file1.txt
+++ b/file1.txt
@@ -0,0 +1 @@
+adding line 1

Highlighted in yellow color is the contents modified.

To see only file names for a commit.

use flag ‘–name-only’ in ‘git show’ command.

git show –name-only <commit-id>

$ git show --name-only c97949d3c04593bdc72478038c4ff76b17de9c8a
commit c97949d3c04593bdc72478038c4ff76b17de9c8a
Author: java-w3schools <venkivenki4b6@gmail.com>
Date:   Sat May 9 23:36:22 2020 +0530

    Spring Boot Data MongoDB: Projections and Aggregations Examples

pom.xml
src/main/java/com/javaprogramto/springboot/MongoDBSpringBootCURD/MongoDbSpringBootCurdApplication.java
src/main/java/com/javaprogramto/springboot/MongoDBSpringBootCURD/config/MongoDBConfig.java
src/main/java/com/javaprogramto/springboot/MongoDBSpringBootCURD/controller/projection/AggregationController.java
src/main/java/com/javaprogramto/springboot/MongoDBSpringBootCURD/controller/projection/EmployeeMongoRepoController.java
src/main/java/com/javaprogramto/springboot/MongoDBSpringBootCURD/controller/projection/MongoTemplateProjectionController.java
src/main/java/com/javaprogramto/springboot/MongoDBSpringBootCURD/model/AgeCount.java
src/main/java/com/javaprogramto/springboot/MongoDBSpringBootCURD/repository/EmployeeRepository.java
src/main/resources/application.properties
$

23. Conclusion

In conclusion, We’ve seen most used git commands in the software developer life every day from git bash or terminal.

If you know, all these commands then you can use git commands wisely.

If you have any questions in “Git Commands”, please post in the comments section. We will answer soon.

Published on Java Code Geeks with permission by Venkatesh Nukala, partner at our JCG program. See the original article here: Top Git Commands With Examples

Opinions expressed by Java Code Geeks contributors are their own.

(0 rating, 0 votes)
You need to be a registered member to rate this.
1 Comment Views Tweet it!
Do you want to know how to develop your skillset to become a Java Rockstar?
Subscribe to our newsletter to start Rocking right now!
To get you started we give you our best selling eBooks for FREE!
1. JPA Mini Book
2. JVM Troubleshooting Guide
3. JUnit Tutorial for Unit Testing
4. Java Annotations Tutorial
5. Java Interview Questions
6. Spring Interview Questions
7. Android UI Design
and many more ....
I agree to the Terms and Privacy Policy
Subscribe
Notify of
guest
The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Mamta Sharma
2 days ago

What is the Proxy Design Pattern in Java? The Proxy Design Pattern provides a representative for another object in order to control the client’s access to it. The intent is to provide a placeholder for that object to control access to it. The literal meaning of proxy is “the authority” to represent someone else”. Now, that says a lot of things about the design pattern itself. As exemplified in the introductory paragraph, the proxy could interface to anything, it can be an interface to a network connection, an object in memory, a file or any other resource that is expensive to… Read more »