Avoid unwanted merge commits and other commits when doing pull request on GitHub

I forked a project on Github.

Let the remote upstream be upstream and my remote repository be origin . My local master branch is set to track the remote master branch. Then I added some stuff in local master , and I merged with the upstream every now and then.

Not until today when I want to issue a pull request did I find the problem: the pull request consists those merge commits , and those unwanted commits that I did previously without care. However what I want is just to submit the last commit I did, which should be pulled as a single commit. What can I do to rescue this?


Instead of merging you want to rebase. You can do this manually, or automatically when pulling.

git pull --rebase upstream master
git push --force origin master

Once you've started doing merges though this will get hard to do, you'll need to reset the branch back to before you did a merge commit.


If I understand your question, you want to get rid of the intermediate/throwaway commits that you did in your branch. Try something like this:

git checkout -b for-upstream remotes/origin/master (create a new branch from the upstream origin)
git cherry-pick <sha-of-the-one-commit-you-want-to-submit> (fix any conflicts if necessary)

this should give you a local "for-upstream" branch which contains just the upstream master + your 1 commit. You can then submit that branch for pull request


On Github, You can't create a pull request for a single specific checkin on a branch that has multiple checkins separating it from upstream.

Create a branch specifically for each pull request you intend to make. This allows you to continue working without fear of polluting a pull request.

链接地址: http://www.djcxy.com/p/48944.html

上一篇: git发布管理

下一篇: 在GitHub上执行请求时避免不需要的合并提交和其他提交