Question

I have forked a github project, then cloned it locally.

I then made some changes in a new branch on my_github/the_project repo.

I then added and committed the changes and pushed to my github repo and submitted a pull request.

The owner has received my request and would like me to "rebase onto master" to get the latest changes. How do I do this?

Initially I thought I could just git fetch and rebase master from within my current branch (as most posts I found advise...), but git fetch didn't do anything. Now I've realized that it is presumably because I'm still fetching from my_ github/repo clone (it's my name in the remotes after all) which hasn't yet got the new changes in master from the github source owner.

I think what I probably need to do is "refresh" my fork so that my fork's master is up-to-date and then I can fetch that master and then rebase on to that master?

If this is the case how can I do that refresh of my forks master? If not how else?

Should I add a remote for the original upstream repository and use that to rebase with (locally)? Is this the preferred method?

Was it helpful?

Solution

Yes, it's not fetching anything because of the reason you surmised. And yes, you should add a remote for upstream locally; it will do a fast-forward merge on master.

git checkout master # Make sure you are in master
git remote add author original_repo_that_you_forked_from
    # Note: This is in the format git@github.com:authors_name/repo_name.git
    #       Only needs definition once, future fetches then use it. 
git fetch author
git status # make sure you are in the master branch for the following merge
git merge author/master  # i.e. 'into' your master branch
git checkout your-branch
git rebase master        # Now get those changes into your branch.
git push origin your_branch # You can also use `-f` if necessary and `--all`

(sorry, I might not have the syntax exactly right)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top