In fact, that's not me who did this, so I can't be sure what exactly he did. He had master and devel branches. He rebased devel onto master branch and did `git push -f`. Supposedly, push.default was set to matching and both branches were pushed. But now in the remote repository master is several tens of commits earlier. I'm not sure if he did `git fetch` and which commit master pointed to at the moment, anyway I'll try to visualize what happened:
* (origin/master) | * (devel) | | ... | * (origin/devel) | | ... | / * v (git rebase origin/master) * (devel) | ... * (origin/master) | ... | * (origin/devel) | | ... | / * v (git push -f) * (devel, origin/devel) | ... * | ... | * (previous origin/devel) | | ... | / * | ... | * (origin/master) | ... Also, I've got a hook reporting about each commit and I received a bunch of letters with subject "discarded commit (<commit message>)". I tried to reproduce it with the following script, but to no effect: #!/usr/bin/env bash set -eu rm -rf 1 1.git mkdir 1 cd 1 git init echo 1 >1 && git add 1 && git ci -m 1 echo 2 >2 && git add 2 && git ci -m 2 git co -b devel echo 3d >3d && git add 3d && git ci -m 3d echo 4d >4d && git add 4d && git ci -m 4d git co master echo 3m >3m && git add 3m && git ci -m 3m echo 4m >4m && git add 4m && git ci -m 4m cd .. git clone --bare 1 1.git rm -rf 1 git clone 1.git 1 cd 1.git git --no-pager log --oneline --decorate --graph master devel cd ../1 git reset --hard HEAD~ git checkout devel git reset --hard HEAD~ echo 4d2 >4d2 && git add 4d2 && git ci -m 4d2 git config push.default matching git push -f cd ../1.git git --no-pager log --oneline --decorate --graph master devel Then if I do `git fetch` in other repositories: * (master) | ... | * (origin/master) | | * (origin/devel) ... | / * v (git fetch) * (devel) | | * (master) ... | / * (previous origin/master) | ... | * (origin/master) And `git pull --rebase` says "Current branch master is up to date." But if I do `git pull --rebase` without `git fetch` first, that's what happens: * (master) | ... | * (origin/master) | | * (origin/devel) ... | / * v (git fetch) * (devel) | ... | * (previous origin/master) | | * (master) ... | / * (origin/master) Hope I made myself clear. And the question is what am I missing? How this could happen? Thanks in advance. -- You received this message because you are subscribed to the Google Groups "Git for human beings" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
