As you guessed, these extra commits are likely the merge commits from the Pull Requests that you created.
In the future, there's a much easier way to sync your fork with the original repository. In your local repo, after the initial clone do:
git remote add upstream https://github.com/upstream/repo.git
Then, whenever you want to sync the changes from upstream, do:
git pull --rebase upstream master
git push --force-with-lease origin master
(The --rebase
and --force-with-lease
options will only be necessary if you have commits that haven't been merged into the upstream repo.)
Obligatory warning: Since a rebase rewrites history, this can be dangerous / disruptive for anyone else working on this branch. Be sure you clearly communicate what you have done with anyone you are collaborating with. Since this is a personal fork, I assume this won't be an issue for you.
Now to fix your current issue after the fact.
- Add the upstream remote as described above.
Reset your local branch to match upstream
:
git checkout master
git reset --hard upstream/master
If you have created any commits in your fork, you can cherry-pick
them onto your updated version of master
. If you can't remember or need help finding them, something like
git log --oneline master origin/master
should show you any commits not in upstream.
Above I assumed that you are only using one branch, master
. If you aren't already, I highly recommend that you create a new branch for each feature / bug fix that you work on. Among other benefits, this allows you to start work on another feature / bug fix when you are still waiting for an earlier PR to be merged. If you never commit directly to master
, then you can sync without the --rebase
or --force-with-lease
:
git checkout master
git pull upstream master
git push origin master
To update a feature branch after you have updated master
, do:
git checkout myfeature
git rebase master
git push --force-with-lease origin myfeature # if you have already pushed
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…