On Tuesday, 18 June 2013 at 20:47:50 UTC, David wrote:
Am 18.06.2013 21:41, schrieb Walter Bright:
I often struggle with understanding how github works. A
problem I was
having often is that I have 3 repositories to deal with:
1. the main one on github (upstream)
2. my github fork of the main one (origin)
3. my local git repository
and (2) and (3) got out of sync with (1), causing all my pull
requests
to go bonkers. What I needed was a "fix (2) and (3) so their
masters are
identical to (1)'s master." Various attempts at fixing it all
failed in
one way or another, often with mysterious messages, and cost
me a lot of
time.
yebblies (Daniel Murphy) provided the solution, which is
nicely generic:
git checkout master
git fetch upstream master
git reset --hard FETCH_HEAD
git push origin master -f
So there it is if anyone else has this problem.
This should not be generalized!
this resets everything you have done on master to upstream!
Anything is
gone, if you actually end up resetting the wrong branch, take a
look
into "git reflog", which allows you to revert the hard-reset
My advice would be to use more branches. Never commit to a master
branch, only merge. Thus all your changes stay available on their
branch and dealing with repo conflicts on master does not risk to
discard (or hide wrt reflog) any commits.