Кажется, что вы хотите удалить ветку 2011_Hotfix
, не теряя ее историю.Я буду обсуждать удаление первого и историю второго.
Обычные git
методы удаления веток уже были описаны выше и работают как положено.git
не имеет команды из одного или двух слов, которая означает: «Привет, git
, удалите как локальную, так и удаленную ветку».Но это поведение можно имитировать с помощью сценария оболочки.Например, возьмите скрипт оболочки Зака Холмана 'git-nuke' .Это очень просто:
#!/bin/sh
git branch -D $1
git push origin :$1
Поместите это в исполняемый файл (например, git-nuke
) в один из ваших каталогов $PATH
.Если вы не в ветке 2011_Hotfix
, вы просто запустите git-nuke 2011_Hotfix
, чтобы удалить как локальную, так и удаленную ветки.Это намного быстрее и проще - хотя, возможно, более опасно - чем стандартные команды git
.
Ваша забота о сохранении истории хороша.В этом случае вам не нужно беспокоиться.После слияния 2011_Hotfix
с master
все коммиты с 2011_Hotfix
будут добавлены в историю коммитов master
.Короче говоря, вы не потеряете историю от простого слияния.
У меня есть еще одно слово, которое, возможно, выходит за рамки вашего вопроса, но, тем не менее, уместно.Давайте представим, что есть 20 крошечных «незавершенных» коммитов на 2011_Hotfix
;однако вы хотите, чтобы в историю master
была добавлена только одна полная фиксация 2011_Hotfix
.Как объединить все 20 маленьких коммитов в один большой коммит?К счастью, git
позволяет объединить несколько коммитов в один коммит, используя git-rebase
.Я не буду объяснять здесь, как это работает;хотя, если вам интересно, документация для git-rebase
превосходна.Обратите внимание, что git rebase
переписывает историю, поэтому ее следует использовать разумно, особенно если вы новичок в ней.Наконец, ваш сценарий 2011_Hotfix
касается команды разработчиков, а не индивидуальных разработчиков.Если члены проектной команды используют git rebase
, для группы было бы разумно иметь четкие рекомендации по использованию git rebase
, чтобы некоторые разработчики-ковбои в команде невольно не повредили историю проекта git
.