Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Changing source branch for PR on Github

Tags:

git

github

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

  • Can you change the source branch of a pull request after the pull request has been submitted?

I see you can edit the base branch, but that's obviously not what I'm after.

like image 207
salient Avatar asked Feb 22 '17 02:02

salient


People also ask

Can we change the source branch in Git?

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


2 Answers

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.

like image 111
Code-Apprentice Avatar answered Sep 20 '22 09:09

Code-Apprentice


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!


Rewrite history of source-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


Rename temporary branch to source-branch

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 

git rebase --onto

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 
like image 33
5 revs Avatar answered Sep 21 '22 09:09

5 revs