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)



  1. 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 current HEAD.

  2. Rewind the master branch to get rid of those three commits.

  3. 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, use



git 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:




  1. Create a new branch:



    git branch newfeature

  2. Checkout new branch: (this will not reset your work.)



    git checkout newfeature

  3. 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

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android SDK Location Should Not Contain Whitespace, As This Cause Problems With NDK Tools