Create Git Branch With Current Changes
Answer :
If you hadn't made any commit yet, only (1: branch) and (3: checkout) would be enough.
Or, in one command: git checkout -b newBranch
As mentioned in the git reset
man page:
$ git branch topic/wip # (1)
$ git reset --hard HEAD~3 # (2) NOTE: use $git reset --soft HEAD~3 (explanation below)
$ git checkout topic/wip # (3)
- You have made some commits, but realize they were premature to be in the "
master
" branch. You want to continue polishing them in a topic branch, so create "topic/wip
" branch off of the currentHEAD
. - Rewind the
master
branch to get rid of those three commits. - Switch to "
topic/wip
" branch and keep working.
Note: due to the "destructive" effect of a git reset --hard
command (it does resets the index and working tree. Any changes to tracked files in the working tree since <commit>
are discarded), I would rather go with:
$ git reset --soft HEAD~3 # (2)
This would make sure I'm not losing any private file (not added to the index).
The --soft
option won't touch the index file nor the working tree at all (but resets the head to <commit>
, just like all modes do).
With Git 2.23+, the new command git switch
would create the branch in one line (with the same kind of reset --hard
, so beware of its effect):
git switch -f -c topic/wip HEAD~3
Like stated in this question: Git: Create a branch from unstagged/uncommited changes on master: stash is not necessary.
Just use:
git checkout -b topic/newbranch
Any uncommitted work will be taken along to the new branch.
If you try to push you will get the following message
fatal: The current branch feature/NEWBRANCH has no upstream branch. To
push the current branch and set the remote as upstream, usegit push --set-upstream origin feature/feature/NEWBRANCH
Just do as suggested to create the branch remotely:
git push --set-upstream origin feature/feature/NEWBRANCH
Follow these steps:
Create a new branch:
git branch newfeature
Checkout new branch: (this will not reset your work.)
git checkout newfeature
Now commit your work on this new branch:
git commit -s
Using above steps will keep your original branch clean and you dont have to do any 'git reset --hard'.
Comments
Post a Comment