-
Star
(152)
You must be signed in to star a gist -
Fork
(24)
You must be signed in to fork a gist
-
-
Save glennblock/1974465 to your computer and use it in GitHub Desktop.
git fetch upstream | |
git reset --hard upstream/master |
(Just to clarify, the term 'upstream' means the person you forked from)
[danny@server01 kloxo]$ git fetch upstream
[danny@server01 kloxo]$ git reset --hard upstream/dev
fatal: ambiguous argument 'upstream/dev': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git [...] -- [...]'
And now?
So this works great locally, but how can I get my github repo master branch to be the same as locally/upstream??
@pepa65
git push origin master --force
complete git commands would be like this:
git remote add upstream https://github.com/some_user/some_repo
git fetch upstream
git checkout master
git reset --hard upstream/master
git push origin master --force
worked for me..thnx
@JerryGoyal PRAISE YOU
@JerryGoyal thank you kind sir
👍
Why not just delete the fork and start over?
@JerryGoyal, Thank you!
@jtr13 might have Github issues you want to keep around
So how about the opposite situation?
What if the history was changed on a fork but it needs to be asserted as the upstream master?
ie, the error: "There isn’t anything to compare." A:master and B: "are entirely different commit histories."
Precondition: Working on the fork
git fetch origin
git checkout master
git reset --hard origin/master
git remote add upstream https://github.com/some_user/A
git push upstream master --force
Would this have expected results?
git push --force
is a required step too to update your remote i.e. origin/master after the hard reset
Works like a charm. Thanks!
This is so great, thank you! @JerryGoyal
what if there are new files in my commit that I want to keep, but changes the upstream made to files that I already have that I also want. When I try to merge upstream, I receive an error: files would be overwritten by merge. But I want them to be overwritten.
can we do this from the GitHub UI?
How can I force users to pull from upstream after a major upgrade of the source code. I have PR validation in place (Jenkins) and they are using the old validation code (python).. ?
Works perfectly. Thanks for the tip.
you may need to also push tags
git push --tags
other variations:
git reset --hard upstream/master
git reset --hard upstream/main
git reset --hard upstream/development
👍
complete git commands would be like this:
git remote add upstream https://github.com/some_user/some_repo git fetch upstream git checkout master git reset --hard upstream/master git push origin master --force
Perfect! Thank you!
So this works great locally, but how can I get my GitHub repo master branch to be the same as locally/upstream??
This is possible with a one-liner that doesn't require downloading anything...
For anyone interested in syncing your GitHub-hosted fork directly (without cloning locally first) you can do this using the GitHub CLI:
gh repo sync owner/cli-fork -b BRANCH-NAME
Keep in mind, that this makes your repo look exactly like upstream - if you have commits, they will be eaten! If you want to update to upstream (but still keep your commits), you want
git merge upstream/master
. If you want to start a new patch based on upstream, the best way to do it isgit checkout -b my-new-feature upstream/master
Of course, this all expects you have a remote named
upstream
, which you can create by doinggit remote add upstream https://[upstream guy's repo url]