В этом случае ситуация заключалась в том, что на кончике ветки master
в одном клоне репозитория произошла непрошедшая фиксация. Затем git pull
запускался много раз в одном и том же репозитории в течение периода времени, когда в апстриме выполнялось много новой работы. (В данном случае это произошло из-за автоматизированного сценария, но то же самое может произойти, если разработчик просто многократно обращается к ветке, чтобы поддерживать ее в актуальном состоянии, а не, скажем, перебазировать.)
Каждое нажатие, когда появлялись новые коммиты в восходящем потоке, создавало новый коммит слияния, поскольку всегда была фиксация в master
, а не в master
восходящем потоке.
В конце концов, история из основной ветки в этом репозитории была отправлена вверх по течению, поэтому другие разработчики увидели, что эта структура в графе коммитов внезапно появилась, когда они в следующий раз извлекли из вышестоящего репозитория.
Если у вас есть история с аналогичной структурой и вы хотите узнать, какой коммит / разработчик вызвал эту проблему, вы можете просто смотреть вниз по линии со звездочками (в основном следуя за первым родителем каждого слияния), пока не дойдете до первая фиксация без слияния. В случае на картинке это был b275805
- фиксация, которая должна была быть отправлена раньше.
Это одна из причин, по которой люди часто предпочитают использовать git pull --rebase
- это упрощает вашу незарегистрированную историю.
Должен отдать должное, мой коллега Мэтью Сомервилл заметил это и выяснил, что происходит.
person
Mark Longair
schedule
24.12.2012
*
*
*
- person ADTC   schedule 19.11.2017