Basic question but this happens to me all the time:
working-branch
master
git merge working-branch
git push
cap deploy
(to staging) then I come back and think of something else and start making some changes...while still on master.
What's an easy way to either:
working-branch
and clear master
so I can continue editing on working-branch
new-working-branch
and then discard working-branch
?Took a risk and tried recommendation in the latter part of "Branches" section of this page but that just wiped out ALL my edits!?! perhaps because after git branch dubious-experiment
and git checkout master
the git status
on both branches was identical (not 'clean' on master). So git reset --hard <SHA1sum>
wiped out all changes on both!?!
git branch dubious-experiment M---N-----O----P---Q ("master" and "dubious-experiment") git checkout master # Be careful with this next command: make sure "git status" is # clean, you're definitely on "master" and the # "dubious-experiment" branch has the commits you were working # on first... git reset --hard <SHA1sum of commit N>
Create a new feature branch, say feature, and then switch to that branch. Implement the feature and commit it to our local repository. Push to the feature branch to the remote repository and create a pull request. After other teammate's review, the new change can be merged into the master or release branch.
Push Branch to Another Branch In some cases, you may want to push your changes to another branch on the remote repository. In order to push your branch to another remote branch, use the “git push” command and specify the remote name, the name of your local branch as the name of the remote branch.
From your description, I assume that you did not commit any changes yet – is that correct?
If yes, here’s your answers:
You would need to set that in your editor, but that will probably be difficult. Displaying your current branch in your prompt and your editor helps a lot.
new-working-branch
and then discard working-branch
git checkout -b new-working-branch git add … git commit -m "mycommit"
As you didn’t commit anything to master yet, you don’t need to change anything on master. You can now discard your working-branch if you feel like it.
working-branch
git checkout -b temp-branch git add … git commit -m "mycommit" git rebase --onto working-branch master git checkout working-branch git reset --hard temp-branch git branch -d temp-branch
If your changes don’t conflict with any changes that are on master, but not in working-branch, this can be done a lot simpler:
git stash git checkout working-branch git stash pop
If you already committed your changes to master
but didn't push to anywhere...
create a new branch for the last changes
git checkout -b newfeat master
replay all the changes (move the commits) on top of your working-branch
branch
git rebase --onto working-branch origin/master newfeat
change to master
branch and reset it to the state of the last push
git checkout master git reset --hard origin/master
At this point you have:
master
pointing to the last pushed commit (origin/master
)working-branch
never changednewfeat
branch that contains all the new commits and is ahead of working-branch
.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With