Кажется, вы хотите удалить 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«s история коммитов. Короче говоря, вы не потеряете историю от простого слияния.
Я хочу добавить еще одно слово, которое, возможно, выходит за рамки вашего вопроса, но, тем не менее, уместно. Давайте представим, что есть 20 крошечных «незавершенных» коммитов 2011_Hotfix; однако вы хотите, 2011_Hotfixчтобы в masterисторию добавлялся только один полный коммит . Как объединить все 20 маленьких коммитов в один большой коммит? К счастью, gitпозволяет объединить несколько коммитов в один коммит с помощью git-rebase. Я не буду объяснять здесь, как это работает; хотя, если вам интересно, документация наgit-rebase отлично. Обратите внимание, что git rebaseпереписывает историю, поэтому она должна использоваться разумно, особенно если вы новичок в этом. Наконец, ваш 2011_Hotfixсценарий о команде разработчиков, а не об одиночном. Если члены команды проекта используютgit rebaseДля команды целесообразно иметь четкие руководящие указания по использованию git rebase, чтобы какой-нибудь ковбойский разработчик в команде невольно не повредил gitисторию проекта .