How can you put uncommitted changes to a branch TEST when I am at the branch master
?
4 Answers
Also you can create a new branch and switch to it by doing:
git checkout -b new_branch
git add .
I use this all the time because I always forget to start a new branch before I start editing code.
-
3same issue as @jouni noted for the other answer - you can run into difficulty merging the branch back into master if additional changes conflict with original changes. IMO this thread answers the question better: stackoverflow.com/questions/556923/…– jpwCommented Apr 20, 2013 at 18:58
-
Short, sweet and reassuring ... "I use this all the time..." Commented Jun 17, 2013 at 16:45
-
1Don't forget to do commit in the new_branch. If you switch back to the master branch and revert changed files, you will lose them in the new_branch too.– petrsynCommented Mar 25, 2014 at 22:48
You can just checkout to the test branch and then commit. You don't lose your uncommited changes when moving to another branch.
Supposing you are at the master branch:
git checkout test
git add .
git add deletedFile1
git add deletedFile2
...
git commit -m "My Custom Message"
I am not really sure about the deleted files, but I guess they aren't included when you use git add .
-
12Sometimes the checkout will fail because your changes conflict with that branch. You can try checkout -m to merge. Commented Nov 4, 2010 at 14:00
-
2I tried this but I got an error : error: Your local changes to the following files would be overwritten by checkout. Please, commit your changes or stash them before you can switch branches.– ishwrCommented Dec 19, 2013 at 11:16
-
While this will work, the answer which says use stash should be preferred, IMO. Maybe just personal choice, but it is a cleaner workflow, logically and introduces STASH which is a useful command.– PatrickCommented Mar 28, 2016 at 22:45
-
The option "-b" is missing, as the headline suggests that the question is concerning a "new" branch.– GuntramCommented May 9, 2017 at 11:20
Why not just use git stash. I think it's more intuitive like a copy-and-paste.
$ git branch
develop
* master
feature1
TEST
$
You have some files in your current branch that you want to move.
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: awesome.py
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: linez.py
#
$
$ git stash
Saved working directory and index state \
"WIP on master: 934beef added the index file"
HEAD is now at 934beef added the index file
(To restore them type "git stash apply")
$
$ git status
# On branch master
nothing to commit (working directory clean)
$
$
$ git stash list
stash@{0}: WIP on master: 934beef ...great changes
$
Move to the other branch.
$ git checkout TEST
And apply
$ git stash apply
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: awesome.py
# modified: linez.py
#
I also like git stash
because I use git flow
, which complains when you want to finish a feature branch whilst having changes still in your working directory.
Just like @Mike Bethany, this happens to me all the time because I work on a new problem while forgetting I am still on another branch. So you can stash your work, git flow feature finish...
, and git stash apply
to new git flow feature start ...
branch.
-
2
git stash
is my preferred way of dealing with uncommitted changes. It's certainly an intuitive method when you think of it as cut and paste. Commented Jan 22, 2013 at 13:41 -
This seems a good approach to me. It worked without a problem. Commented May 1, 2014 at 9:04
-
Didn't know you could do this and it worked nicely. Feels a bit more intuitive than the other methods.– glauconCommented Aug 14, 2014 at 4:55
-
I think stashing it's more professional way, instead of using git checkout and then add. I think your answer should be 100+ votes. Commented Mar 20, 2015 at 22:12
-
1