$show=/label

Two ways to Unstage a File in Git git rm --cached and git reset Head)

SHARE:

Learn how to unstage a file in git. Unstaging a file from staging area in git with example demonstration. Step by step commands to remove or unstage a existing file on git. Two best ways to unstage a file in git.

Git Unstage file

Common question on git unstage :

This post covers the following questions with in-depth answers along with step-by-step example.
git reset - Why are there 2 ways to unstage a file in git? - Stack Overflow
version control - How to undo 'git add' before commit? - Stack Overflow
git - How can I unstage my files again after making a local commit.

More article on Git Series


How to Unstage a File in Git in Two ways using git rm --cached and git reset Head (Removing File From Staging)



Unstage a File in Git:

In Git, unstaging a file can be done in two ways.

1) git rm --cached <file-name>
2) git reset Head <file-name>

These commands are very useful when we add the files to git. But later or before commit, we realize that mistakenly added the files to git. we should remove the files from git. The process of removing a file from  staging area is called "Unstaging file" from git.

We will be discussing indepth in this tutorial.


Unstage a File in Git

Way 1) git rm --cached <file-name>:

This can be used in two ways.

1) On the brand new file which is not on github.
2) On existing file which exists on github.

We will see how this command behaves on above 2 scenarios.

Case 1: rm --cached on new file which is not committed.

rm --cached <brand-new-file-name>is useful when we want to remove only the file(s) from staging area where this file is not available on github ever. After executing this command, the file remains in the local machine, it just unstaged from staging area.

Example:

The below example is on the new file.

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ ls 
fileone.txt

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ echo "this is second file" >> filetwo.txt
Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ ls
fileone.txt  filetwo.txt

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git add filetwo.txt

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        new file:   filetwo.txt

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)

$ git rm --cached filetwo.txt
rm 'filetwo.txt'Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        filetwo.txt
nothing added to commit but untracked files present (use "git add" to track)

Case 2: rm --cached on existing file.

If 'rm --cached <existing-file-name>.'command is used on the existing file on git then this file will be marked for delete and remains as untracked on machine. If we do commit after this command then the file on the github will be deleted permanently. We should be very careful while using this command. Hence, This is not recommend for upntaging a file.

Below example will demonstrate on existing file.

Example:

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        filetwo.txt
nothing added to commit but untracked files present (use "git add" to track)

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)

$ git add filetwo.txt
Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git commit -m "second file commit"
[master 2efa8d9] second file commit
 1 file changed, 1 insertion(+)
 create mode 100644 filetwo.txt
Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ echo "file 1 is modified" >> fileone.txt
Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ echo "file 2 is modified" >> filetwo.txt
Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git add fileone.txt filetwo.txt
Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        modified:   fileone.txt
        modified:   filetwo.txt
Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git commit -m "second commit"
[master d81f0ef] second commit
 2 files changed, 2 insertions(+)

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ ls
fileone.txt  filetwo.txt

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

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ ls
fileone.txt  filetwo.txt

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        deleted:    filetwo.txt
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        filetwo.txt

Here we see that filetwo.txt is marked as deleted but original file is present on local machine. After git commit, file is completely not tracked by git.

$ git commit -m "delete from git commit"
[master bc72f1b] delete from git commit
 1 file changed, 2 deletions(-)
 delete mode 100644 filetwo.txt

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ ls

fileone.txt  
filetwo.txt

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        filetwo.txt

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

Way 2) git reset Head <file name>:

There is a scenario, where the file is already exists on the github. We made some changes to the file and added the file to git staging area but not committed. After some time, this change is no longer required. We just want to remove from git index or unstage the file and our new changes should be available in the file. If we use git reset head <file-name> command then changes will not be lost.

After unstage, this modified will be in the modified files list when we do git status command..

Example:

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ ls
fileone.txt  filetwo.txt

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git status
On branch master
nothing to commit, working tree clean

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ echo "added new line" >> filetwo.txt

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git add filetwo.txt

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ cat filetwo.txt
this is second file
file 2 is modified
added new line

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        modified:   filetwo.txt

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ git reset head filetwo.txt
Unstaged changes after reset:
M       filetwo.txt

Venki@Venki-PC MINGW64 /d/Site/adeepdrive/git/practice/gitdemo (master)
$ cat filetwo.txt
this is second file
file 2 is modified
added new line


How to Unstage Files in Git 

COMMENTS

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,API,31,ArrayList,16,Arrays,1,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,4,Collections,20,Collector,1,Command Line,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,5,Core Java,67,Corona India,1,Create,2,CSS,1,Date,2,Date Time API,3,Dictionary,1,Difference,1,Download,1,Eclipse,2,Efficiently,1,Error,1,Errors,1,Exception,1,Exceptions,2,Fast,1,Files,8,Float,1,Font,1,For examples,1,For loop examples,1,For Loop in Java,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,4,Grant,1,Grep,1,HashMap,1,HTML,2,HttpClient,2,Immutable,1,Inner for loops,1,Installation,1,Interview Questions,5,Iterate,2,Jackson API,3,Java,28,Java 10,1,Java 11,5,Java 12,5,Java 13,2,Java 14,2,java 5 For loop,1,Java 8,44,Java 9,1,Java Design Patterns,1,Java Files,1,Java for loop,1,Java Program,2,Java Programs,61,java.lang,5,java.util. function,1,jQuery,1,Kotlin,10,Kotlin Programs,6,Lambda,1,lang,29,Leap Year,1,live updates,1,Math,1,Maven,1,Method References,1,Mockito,1,MongoDB,3,Nested for loop,1,Nested for loop examples,1,New Features,1,Operations,1,Optional,3,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,1,Softwares,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Stream,1,Streams,11,String,45,String Programs,6,String Revese,1,Swing,1,System,1,Tags,1,Threads,7,Tomcat,1,Tomcat 8,1,Troubleshoot,16,Unix,2,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo: Two ways to Unstage a File in Git git rm --cached and git reset Head)
Two ways to Unstage a File in Git git rm --cached and git reset Head)
Learn how to unstage a file in git. Unstaging a file from staging area in git with example demonstration. Step by step commands to remove or unstage a existing file on git. Two best ways to unstage a file in git.
https://1.bp.blogspot.com/-sD-un9-Srjc/XqxNCow8n3I/AAAAAAAACmQ/4J4opsviv98Crhwh4BmTKCP5GUZeOwvGgCLcBGAsYHQ/s640/How%2Bto%2BUnstage%2Ba%2BFile%2Bin%2BGit%2Bin%2BTwo%2Bways%2Busing%2Bgit%2Brm%2B--cached%2Band%2Bgit%2Breset%2BHead%2B%2528Removing%2BFile%2BFrom%2BStaging%2529.png
https://1.bp.blogspot.com/-sD-un9-Srjc/XqxNCow8n3I/AAAAAAAACmQ/4J4opsviv98Crhwh4BmTKCP5GUZeOwvGgCLcBGAsYHQ/s72-c/How%2Bto%2BUnstage%2Ba%2BFile%2Bin%2BGit%2Bin%2BTwo%2Bways%2Busing%2Bgit%2Brm%2B--cached%2Band%2Bgit%2Breset%2BHead%2B%2528Removing%2BFile%2BFrom%2BStaging%2529.png
JavaProgramTo
https://www.javaprogramto.com/2017/10/git-unstage-file.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2017/10/git-unstage-file.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content