Здесь есть недоразумение относительно того, что такое «вилка». На самом деле, ответвление - это не что иное, как набор веток для каждого пользователя. Когда вы нажимаете на разветвление, вы действительно продвигаетесь в исходное хранилище, потому что это ЕДИНСТВЕННОЕ хранилище.
Вы можете попробовать это, нажав на форк, отметив коммит, а затем перейдя в исходный репозиторий и используя идентификатор коммита, вы увидите, что коммит находится «в» исходном репозитории.
Это имеет большой смысл, но это далеко не очевидно (я обнаружил это только недавно).
Когда Джон разветвляет репозиторий SuperProject, кажется, что на самом деле все ветки в исходном репозитории реплицируются с такими именами, как «John.master», «John.new_gui_project» и т. Д.
GitHub «прячет» «Джона». от нас и дает нам иллюзию, что у нас есть своя собственная «копия» хранилища на GitHub, но мы этого не делаем, и даже не нужен.
Так что ветвь моей ветки "master" на самом деле называется "Korporal.master", но пользовательский интерфейс GitHub никогда не раскрывает это, показывая мне только "master".
Это в значительной степени то, что я думаю, все равно происходит под капотом, основываясь на материалах, которые я делал недавно, и, когда вы обдумываете это, это очень хороший дизайн.
По этой причине я думаю, что для Microsoft было бы очень легко внедрить вилки Git в свои предложения Visual Studio Team Services.
--reference
крестиком. Как именно обрабатываются публичные репо и удаления, не совсем понятно (переместить альтернативы в произвольно выбранные продвигаемые репо - указать все вилки на какой-нибудь общий альтернативный вариант, не являющийся частью исходного форка?), Но использование альтернатив объясняет различные наблюдаемые варианты поведения.