Замораживание ветки Git
Скажем, у меня развитая ветвь. Я создаю ветку признаков из этого для разработки функции. После того, как эта функция разработана, она снова объединяется в разработку. В значительной степени, как показано здесь:
![enter image description here]()
Можно ли заморозить ветвь функции, чтобы никакие дальнейшие коммиты не могли быть сделаны?
Причина того, что удаленная ветка не удалена напрямую, так что просмотр истории все еще может показывать ветвь функции, и если в настройке должна быть настройка, тогда для кого-то можно создать новую ветвь функции из последняя фиксация предыдущей функции.
Ответы
Ответ 1
Кристофер прав, пометка поможет вам сделать это. Я рекомендую удалить имя ветки, чтобы сделать его немного сложнее, если кто-то проверит ветку и внеся изменения.
Сначала слейте ветвь в развитие
git checkout develop
git merge --no-ff feature_1
Затем проверьте ветвь
git checkout feature_1
Затем создайте тег с комментарием.
git tag -a -m "Freezing a feature branch that fixes.." feature_1_frozen
Затем удалите ветвь
git checkout develop
git branch -d feature_1
После этого вы не сможете проверить ветку по имени. Вместо этого вы сможете проверить тег по имени, это приведет вас в состояние отдельной головы, которое сдерживает изменения кода.
Теперь, чтобы обернуть вещи и синхронизировать с источником...
Нажмите обновление и новый тег
git push --tags origin develop
Удалите ветвь удаленной функции
git push origin :feature_1
Ответ 2
Просто пометьте его.
git tag -a frozen -m "Feature branch frozen here."
git push <remote> frozen
Конечно, кто-то может прийти позже и нажать на ветку, но тег не должен меняться, если он не насильственно не перевернется. Вы можете настроить пульт, чтобы отклонить принудительные нажатия, если вас это беспокоит, или даже подписывать теги с ключом GPG для обеспечения подлинности.
Получение состояния ветки функции при ее замораживании так же просто, как git checkout frozen
. Разработчики могут по ветру из этой точки по очереди использовать одну команду: git checkout -B <new_branch> frozen
.
Ответ 3
Вы можете использовать что-то вроде gitolite или gerrit для контроля доступа и разрешения по ветвям, тегам и репозиториям.
Посмотрите здесь:
Ответ 4
Рассмотрим git-freeze, как указано в Git - Статус ветки (замороженный, неактивный и т.д.).
Ответ 5
Я использую консоль "Git Bash", чтобы заморозить ветку:
[Решение работало лучше всего в октябре 2018 года]
Нет Git Bash?
Вот как установить и использовать консоль Git Bash:
Ссылка:
https://github.com/msysgit/msysgit/releases/
https://help.github.com/articles/set-up-git/
Как заморозить ветку
git checkout {branch-to-keep-alive}
git merge --no-ff {branch-to-freeze}
Если git запрашивает сообщение о слиянии, введите его, затем нажмите клавишу [Esc], а затем введите ": wq" для сохранения и выхода.
Вы должны пойти в visual studio и убедиться, что вы можете успешно построить решение (с помощью {branch-to-keep-alive}).
git checkout {branch-to-freeze}
git tag -a -m "{your-description}" {tag-for-the-branch-to-freeze}
Соглашение: создайте тег следующим образом: {branch-name} _frozen
git checkout {branch-to-keep-alive}
git branch -d {branch-to-freeze}
git push --tags origin {branch-to-keep-alive}
git push origin :{branch-to-freeze}
Как объединить ветку с мастером:
git checkout {your-working-branch}
Git Merge Master
Откройте против и разрешите конфликты слияния, если они есть. Всегда перестраивать все вещи.
git checkout master
git merge development
Там не будет никаких конфликтов сейчас, и все готово.
Консоль Git Bash:
![enter image description here]()