Ответ 1
В этом случае ситуация заключалась в том, что на кончике ветки master
в одном клоне репозитория произошла попытка нефиксированной фиксации. Затем git pull
выполнялся много раз в том же репозитории, в течение периода времени, когда было сделано много новых работ вверх. (В этом случае это произошло из-за автоматизированного script, но то же самое может произойти, если разработчик просто многократно перебирает ветку, чтобы поддерживать ее в актуальном состоянии, а не, скажем, rebasing.)
Каждое притяжение, когда появились новые коммиты вверх, создало новое коммандное слияние, поскольку в master
всегда было фиксация, которая не находилась в master
вверх по течению.
В конце концов, история из ведущей ветки в этом репозитории была перенесена вверх по течению, поэтому другие разработчики увидели, что эта структура в графе фиксации внезапно появляется, когда они затем вытаскиваются из восходящего репозитория.
Если у вас есть история с подобной структурой, и вы хотите узнать, какой коммит/разработчик это вызвало эту проблему, вы можете просто смотреть вниз по линии со звездами (в основном следуя за первым родителем каждого слияния), пока вы попадаете на первое коммандное объединение. В случае на картинке это было b275805
- фиксация, которая должна была быть нажата ранее.
Это одна из причин, по которой люди часто предпочитают использовать git pull --rebase
- это упрощает историю распаковки.
Чтобы отдать должное, когда это произошло, мой коллега Matthew Somerville заметил это и выяснил, что происходит.