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