git - update fork's master & rebase my branch

2019-03-09 17:59发布

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?

1条回答
叼着烟拽天下
2楼-- · 2019-03-09 18:14

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)

查看更多
登录 后发表回答