Сколько бы это ни стоило, pscott-au
уже ответвляется devel
.Это также ветвится master
.Ну, поскольку это ответвляется от всего, то есть совсем нет.: -)
Дело в том, что имена веток просто действуют как указатели на коммиты.Коммиты - это круглые круги на ваших диаграммах.
Коммиты никогда не меняются и не двигаются;их связи никогда не меняются и не двигаются.(Вы можете нарисовать их / перетащить их в разные места, но в этом случае их соединения будут перетаскиваться вместе с ними, поэтому даже если рисунок выглядит другим, он представляет один и тот же график.)
Ветвь names , с другой стороны, все время движется.Имя ветки просто запоминает один конкретный коммит , который Git называет наконечник ветки .Фиксация может быть кончиком ветви в один момент, затем где-то глубоко в ветви, или не содержаться в ветви вообще, в следующий момент.Вот что произошло, когда вы переместили имя master
назад так, чтобы оно указывало на коммит, теперь тоже помеченный v0.03
.
Что делает имя ветви быть именем ветви.... ну, на самом деле, это факт, что его внутреннее правописание refs/heads/<em>name</em>
, но ключевой признак имени ветви состоит в том, что вы можете запустить git checkout <em>name</em>
, а затем запустить различные вещи, заканчивающиеся на git commit
.Команда commit делает new commit - новый раунд на графе - чье родительское соединение возвращается к коммиту, который вы извлекли ранее;и затем, в конце процесса git commit
, Git настраивает имя так, чтобы оно указывало на новый коммит, который вы только что сделали!
Различные origin/*
имена являются вашими локальнымиGit помнил, где имена веток в other Git-хранилище, хранящемся в GitHub, были последним, когда ваш локальный Git вызывал GitHub Git.Вы получаете их из другого Git, используя git fetch
.Вы просите или говорите другому Git изменить их, используя git push
, как в git push <em>flags</em> origin <em>name1 name2 ...</em>
.Они выполнят запрос, если предлагаемое вами изменение - операция fast-forward .flags
может включать --force
, чтобы сделать его командой вместо вежливого запроса (хотя они все еще могут не подчиняться командам);это - или какой-то другой вариант, такой как --force-with-lease
- требуется, если изменение, которое вы хотите сделать, является , а не ускоренной перемоткой вперед.
Изменение, которое вы хотите здесь, не являетсяперемотка вперед, поэтому вам нужно будет запустить git push --force origin devel master
.Это отправит им любые новые коммиты, которые у вас есть, которых у них нет - чего нет, так что это действительно быстро - и затем прикажет им установить devel
на один из этих коммитов (что они будут делать даже в качестве запроса) идайте им команду установить их master
на другое (что они будут выполнять, если вы являетесь администратором этого хранилища или иным образом авторизованы согласно тем правилам, которые вы указали GitHub для обеспечения соблюдения).
Как только ваш Git знает, чтоих Git принял это новое-name-creation и master
-name-change, ваш Git добавит origin/devel
к вашим именам удаленного отслеживания и переместит ваш origin/master
, чтобы запомнить коммит, который они согласились использовать для своихmaster
.