Как закрыть ветку Git?

112

поэтому я начинаю использовать Git + GitHub.

В нашей небольшой распределенной команде каждый участник создает свою собственную ветку для каждой выделенной им задачи / требования.

  1. git branch Issue#1 <-- create this branch
  2. git checkout issue#1 <-- switch over to this branch

Теперь code code, commit, code, commitи т.д. ...

затем pull request, code-fixup, commit, code, commit.. и т.д.

И НАКОНЕЦ ... запрос на перенос принят.

Woot.

но .. что теперь? (......неловко......)

Нужно ли человеку, создавшему ветвь на своей локальной машине разработчика .. закрыть ветку? Разработчику было предложено удалить ветку `(... -D ...), а затем выполнить извлечение / обновление мастера ... который затем получит весь их код ветки.

Хммммм ... не уверен - помогите пожалуйста :)

Pure.Krome
источник
16
Ветвь в Git - это просто метка на конкретном коммите, поэтому, если она вам больше не нужна - просто удалите эту «ветку» (эту «метку» на этой фиксации). Локально, просто сделайте a git branch Issue#1 -dи все, что есть - код не теряется, просто метка удаляется из вашего репозитория
marc_s
1
@marc_s Я предлагаю просто дать ответ :)
KingCrunch
Итак, @marc_s - вы говорите, что стандартная практика после того, как вы завершили свою ветку ... и ветка была отправлена ​​... мы удалили ее? А как насчет слияния?
Pure.Krome
@ Pure.Krome По крайней мере, я предполагал, что под «запрос на перенос принят» вы имеете в виду, что он уже объединен. Да, конечно, интегрируйте изменения в master, developили в другое название вашей ветки разработки (Merge, Rebase (с / без сквоша), ...)
KingCrunch
когда я сказал "запрос на перенос принят" ... это происходит где-то еще. (то есть ответственный разработчик, утверждающий весь PR-код ...). Мне было интересно, следует ли мне переключиться на master на МОЕЙ локальной машине разработчика и также выполнить слияние.
Pure.Krome

Ответы:

181

Мы просим разработчика, запрашивающего запрос на вытягивание, указать, что он хотел бы удалить ветку. В большинстве случаев это так. Бывают случаи, когда требуется ветвь (например, копирование изменений в другую ветку выпуска).

Мои пальцы запомнили наш процесс:

git checkout <feature-branch>
git pull
git checkout <release-branch>
git pull
git merge --no-ff <feature-branch>
git push
git tag -a branch-<feature-branch> -m "Merge <feature-branch> into <release-branch>"
git push --tags
git branch -d <feature-branch>
git push origin :<feature-branch>

Ветка рабочая. Тег отмечает место во времени. Пометив каждое слияние веток, мы можем воскресить ветку, если это необходимо. Теги веток использовались несколько раз для просмотра изменений.

Билл Дверь
источник
8
Мы недавно внесли изменения в нашу процедуру. Использование git push --tagsявляется тяжелым и загружает все теги. Это затрудняет наличие собственных локальных тегов. Вместо этого мы используем git push origin branch-<feature-branch>только один тег.
Билл Дор
Итак, в последней строке вам нужно не забыть использовать имя тега для ветки функции, которое мы ранее установили как «ветка- <feature-branch>», а не просто <feature-branch>. Верный?
Премьер Броманов
@PremierBromanov последняя строка предназначена для удаления удаленной ветки. Помните, что тег @BillDoor использовал git push --tags.
Deivide
Отличный сценарий !!
Кике Гамбоа
41

Да просто удали ветку запустив git push origin :branchname. Чтобы позже исправить новую проблему, снова отделитесь от мастера.

Гаурав Гупта
источник
3
Это удалит удаленную ветку, а не локальную.
KingCrunch
5
Я не знаю, почему это модифицировано на -2, это правильный ответ. У них определенно есть удаленная ветка, как еще они могли выставить против нее пиар?
Ана Беттс
Если вы сделаете это, а затем выполните git pull, не удалит ли он и вашу локальную ветку? (Edit: nm, я вижу, что это явно не так, если вы не запустите git remote prune.)
Тим Китинг,
1
Что происходит с историей ветки?
geoidesic
40

после завершения кода первая ветвь слияния для мастера, затем удалите эту ветку

git checkout master
git merge <branch-name>
git branch -d <branch-name>
Дау
источник
и это на МОЕЙ собственной машине разработчика, верно? главный человек, который принимает любой новый код .. его машина находится в другом месте.
Pure.Krome
2
Если кто-то другой выполняет слияние, он обычно имеет указатель вашей ветки на отдельном удаленном компьютере, например, отправитель / имя-ветки. Ему нужно будет использовать, git remote prune senderчтобы избавиться от него после того, как вы сделали это, хотя в большинстве случаев ему не нужно заботиться.
jørgensen
1
Вы никогда не должны объединять свою собственную ветку, если только вы не отвечаете за ее интеграцию в главное дерево. Если это не так, и вы попросили кого-то еще интегрировать его, обновите свою основную ветку новыми удаленными коммитами - они должны содержать все, что вы запрашивали, - а затем удалите свою ветку. Это гарантирует, что у вас не будет проблем, если другой парень что-то изменит.
ThiefMaster