I accidentally created a pull request from the master-branch of my fork of a repo.
While trying to rebase it I noticed that all of these changes were pushed into that pull request — due to the fact that you can simply Add more commits by pushing to the master branch on username/repo
I see you can edit the base branch, but that's obviously not what I'm after.
To create a new branch in Git, you use the git checkout command and pass the -b flag with a name. This will create a new branch off of the current branch. The new branch's history will start at the current place of the branch you "branched off of."
AFAIK, you cannot change the source branch after creating a Pull Request. You have to create a new one instead.
For future reference, the established best practice is to create a new branch before making any commits. You should not commit directly to master, especially when contributing to team projects.
Side note:
you can simply Add more commits by pushing to the master branch on username/repo
More correctly, any changes to the target branch of a PR are automatically included in the PR.
Since you can't change the source branch in github (you can only change the target branch), you need to update the source-branch "inplace".
This answer contains three ways of doing this.
In Github you see:
githubuser wants to merge N commit into master from "source-branch"
Since you will change the history of "source-branch", be sure nobody else is using this branch!
If you are the only one developing on this branch, then you can use git rebase -i
and later git push --force-with-lease
.
This way you can rewrite the history of this branch.
Docs about rewriting the git history: https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
If you prefer to start from scratch.
git checkout master # create a temporary branch git checkout -b tmp-branch ... now modify the tmp-branch the way you want to. Commit, but don't push. # rename tmp-branch to "source-branch" git branch -f -m source-branch # Be sure nobody is using "source-branch", since the history gets rewritten. git push --force-with-lease
Imagine your branch "source-branch" was accidentely based on "release" and not on "master". But the github target branch is "master". This way you can change your changes to be on top of master:
git checkout source-pr git rebase --onto master release
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