GitHub pull request showing commits that are already in target branch
To sum up, GitHub does not rebase the commit history automatically in pull requests. The simplest solutions are:
Solution 1: Rebase
Suppose that you want to merge into master
from feature-01
:
git fetch origin
git checkout feature-01
git rebase origin/master
git push --force-with-lease
If you are working on a fork then you might need to replace origin
above with upstream
. See How do I update a GitHub forked repository? to learn more about tracking remote branches of the original repository.
Solution 2: Create a new pull request
Suppose that you want to merge intro master
from feature-01
:
git checkout feature-01
git checkout -b feature-01-rebased
git push -u origin feature-01-rebased
Now open a pull request for feature-01-rebased
and close the one for feature-01
.
Here's a good workaround. Use the Edit
button when viewing the PR in GitHub to change the base branch to something other than master
. Then switch it back to master
and it will now correctly show only the changes from the most recent commits.
It looks like the Pull Request doesn't keep track of changes to the target branch (I contacted GitHub support, and received a response on 18 Nov 2014 stating this is by design).
However, you can get it to show you the updated changes by doing the following:
http://githuburl/org/repo/compare/targetbranch...currentbranch
Replace githuburl
, org
, repo
, targetbranch
, and currentbranch
as needed.
Or as hexsprite pointed out in his answer, you can also force it to update by clicking Edit on the PR and temporarily changing the base to a different branch and back again. This produces the warning:
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline, and old review comments may become outdated.
And will leave two log entries in the PR: