MyTetra Share
Делитесь знаниями!
Как сдвинуть ветку master назад по истории
Время создания: 11.06.2024 11:34
Текстовые метки: git, передвинуть, перемещение, ветка, master, назад, репозитарий, apache2, gitweb, сервер
Раздел: Компьютер - Программирование - Системы контроля версий (VCS) - Git
Запись: xintrea/mytetra_syncro/master/base/1718094869rdkzz4zu5b/text.html на raw.github.com

Здесь написано как переместить указатель master по истории назад так, чтобы сохранилась цепочка коммитов в других ветках, которые основываются на ветке master.


Если бы действия касались любой ветки, кроме master, (или если бы не было удаленного репозитария), то команды были бы следующие:



git checkout AB12CD345 # Переключение на коммит, на который перемещается master

git checkout -b new_master # Создание новой временной ветки и переключение на нее

git branch -D master # Удаление master

git branch -mv new_master master # Переименовывание временной ветки в master



Однако, ветка master всегда защищена от изменений на удаленном репозитарии. Она является веткой по-умолчанию, и поэтому её нельзя так просто взять и удалить или переименовать.


Последовательность действий, которая нужна для перемещения указателя master по истории назад, включает в себя команды, выполняемые непосредственно на Git-сервере в каталоге, где находится репозитарий. Далее перечислены необходимые команды, с указанием где они должны выполняться. Предполагается, что Git-сервер устроен на базе Apache2 + Gitweb. Важно соблюдать нижеуказанную последовательность.



1. Команды на клиенте:


> git checkout AB12CD345

> git checkout -b alternative_master

> git push --set-upstream origin alternative_master



2. Команды на git-сервере:


Перейти в каталог репозитария


> cd /home/git/our_repository.git


Посмотреть текущую ветку по-умолчанию:


> git symbolic-ref HEAD

refs/heads/master


Изменение текущей ветки по-умолчанию:


> git symbolic-ref HEAD refs/heads/alternative_master



3. Команды на клиенте:


Удаление master локально:


> git branch -D master


Удаление master на сервере:


> git push origin --delete master


Локальное переименование временного master в основной


> git branch -mv alternative_master master


Отправка master на сервер


> git push --set-upstream origin master



4. Команды на git-сервере:


Перейти в каталог репозитария


> cd /home/git/our_repository.git


Посмотреть текущую ветку по-умолчанию:


> git symbolic-ref HEAD

refs/heads/alternative_master


Изменение текущей ветки по-умолчанию:


> git symbolic-ref HEAD refs/heads/master



5. Команды на клиенте:


Удаление временного master на сервере:


> git push origin --delete alternative_master



Так же в этом разделе:
 
MyTetra Share v.0.60
Яндекс индекс цитирования