How do you move a commit to the staging area in git?
GitCommitStagingGit Problem Overview
If you want to move a commit to the staging area - that is uncommit it and move all of the changes which were in it into the staging area (effectively putting the branch in the state that it would have been in prior to the commit) - how do you do it? Or is it something that you can't do?
The closest that I know how to do is to copy all of the files that were changed in the commit to somewhere else, reset the branch to the commit before the commit that you're trying to move into the staging area, move all of the copied files back into the repository, and then add them to the staging area. It works, but it's not exactly a nice solution. What I'd like to be able to do is just undo the commit and move its changing into the staging area. Can it be done? And if so, how?
Git Solutions
Solution 1 - Git
git reset --soft HEAD^
This will reset your index to HEAD^
(the previous commit) but leave your changes in the staging area.
There are some handy diagrams in the git-reset
docs
If you are on Windows you might need to use this format:
git reset --soft HEAD~1
Solution 2 - Git
A Simple Way
-
Committed files to Staging Area
git reset --soft HEAD^1
-
Staging to UnStage :(use "git reset HEAD
..." to unstage)
git reset HEAD git commands.txt or git reset HEAD *ds.txt
here, *--> all files end with ds.txt to unstage.
Refer the below pic for clarity:
Solution 3 - Git
To move a commit back to the staging area depends on your last commit. If your last commit was the first(or initial) commit of the repo, then you need to execute
git update-ref -d HEAD
If your last commit is not the first(or initial) commit, then execute
git reset HEAD~