Подтвердить что ты не робот

Замораживание ветки Git

Скажем, у меня развитая ветвь. Я создаю ветку признаков из этого для разработки функции. После того, как эта функция разработана, она снова объединяется в разработку. В значительной степени, как показано здесь:

enter image description here

Можно ли заморозить ветвь функции, чтобы никакие дальнейшие коммиты не могли быть сделаны?

Причина того, что удаленная ветка не удалена напрямую, так что просмотр истории все еще может показывать ветвь функции, и если в настройке должна быть настройка, тогда для кого-то можно создать новую ветвь функции из последняя фиксация предыдущей функции.

4b9b3361

Ответ 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.

Ответ 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