问题
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:
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)
来源:https://stackoverflow.com/questions/19884206/git-update-forks-master-rebase-my-branch-onto-it