Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Turn all changes after latest origin/main into a branch
I have a git history that basically looks like this:
* commit: XXX (HEAD -> main)
|
|
* commit: YYY
|
|
* commit: ZZZ (origin/main)
|
|
...
Now I would like to turn everything after the last origin/main into a named branch (that is, the changed repository would look as if I branched at commit: ZZZ).
Is this possible, and if so, what is the best way to do it?
2 answers
First you want to make your new branch at HEAD
(current main
). Then you want to point main
back to origin/main
.
# Create new branch
git branch new_branch_name
# Point main back at origin
git reset --hard origin/main
1 comment thread
The following users marked this post as Works for me:
User | Comment | Date |
---|---|---|
celtschk |
Thread: Works for me Thanks, that worked great. |
Sep 1, 2024 at 20:23 |
I handle this with:
- Create a new branch with same commits
- Delete commits from main branch
In the situation shown, if you do git checkout -b new_branch
it will create a new branch with the same commits. You then switch back to main
and get rid of the commits on it with git reset HEAD~2
.
You can use ZZZ
instead of HEAD~2
as the argument to reset if you don't want to count them. I think origin/main
might also work. You can pass --hard
so that it doesn't leave uncommitted files for you to clean up.
This is also known as "I forgot to switch to a feature branch before making my commits".
0 comment threads