Як закрити відділення 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.. і т.д.

і НАСІЛЬНО ... запит на витяг приймається.

Вут.

але .. тепер що? (...... незручно ......)

Чи потрібно людині, яка створила гілку на своїй місцевій машині розробки, закрити гілку? Пропозиція була розроблена людиною, щоб видалити гілку `(... -D ...), а потім зробити тягнути / оновити головний .., який потім отримає весь їхній код філії.

Хммммм ... не впевнений - будь ласка допоможіть :)


16
Гілка в Git - це лише мітка на певній комісії - тому в основному, якщо вона вам більше не потрібна - просто видаліть цю "гілку" (цю "мітку" на цьому комітеті). Місцево просто зробіть це, git branch Issue#1 -dі це все, що є - код не втрачено, просто ярлик видалено з вашого сховища
marc_s

1
@marc_s Я пропоную просто зробити відповідь з нього :)
KingCrunch

Отже, @marc_s - ви говорите, що звичайна практика, коли ви закінчили свою гілку .. і гілка була висунута .. ми її видаляємо? А як щодо злиття?
Pure.Krome

@ Pure.Krome Принаймні я припускав, що під "запитом на виклик прийнято" ви маєте на увазі, що він уже об'єднаний. Так, звичайно, інтегрувати зміни в master, developабо незалежно від вашого розвитку галузі називається (Merge, Rebase (с / без кабачків), ...)
KingCrunch

коли я сказав, що "запит на прийом приймається" .. це відбувається десь в іншому місці. (тобто відповідальний розробник, який затверджує весь код, який є PR'd ...). Мені було цікаво, чи варто мені перейти до майстра на моїй локальній машині розробників і зробити злиття також.
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>для натискання лише одного тегу.
Двері Білла

Отже, в останньому рядку вам потрібно пам’ятати, щоб використовувати ім’я тегів для гілки функцій, яку ми встановили раніше на «гілка- <функція- відгалуження>», а не просто <особливість- галузь>. Правильно?
Прем'єр Броманов

@PremierBromanov останній рядок призначений для видалення віддаленої гілки. Для запам'ятовування тег @BillDoor використовували git push --tags.
Розділити

Відмінний сценарій !!
Кіке Гамбоа

41

Так, просто видаліть гілку, запустивши git push origin :branchname. Щоб виправити нову проблему пізніше, знову відключіться від майстра.


3
Це видалить віддалену гілку, а не локальну.
KingCrunch

5
Я не знаю, чому це модифіковано в -2, це правильна відповідь. Вони, безумовно, мають віддалене відділення, як інакше вони могли оприлюднити PR?
Ана Беттс

Якщо ви це зробите, а потім потягніть git, чи не буде він також видалити вашу локальну гілку? (Редагувати: nm, я бачу, що це явно не відбувається, якщо ви не запустите git remote prune.)
Тім Кітінг

1
Що відбувається з історією філії?
геодезичний

40

після завершення коду спочатку об'єднайте гілку з master, а потім видаліть її

git checkout master
git merge <branch-name>
git branch -d <branch-name>

і це на моїй власній машині розробників, правда? головна людина, яка приймає будь-який новий код .. його машина знаходиться в іншому місці.
Pure.Krome

2
Якщо хтось інший здійснює злиття, він зазвичай має ваш покажчик гілки на окремому пульті, наприклад, ім'я відправника / гілки. Його потрібно використовувати, git remote prune senderщоб позбутися від нього і після вас, хоча в більшості випадків йому не потрібно піклуватися.
jørgensen

1
Ви ніколи не повинні зливатися свій власний філіал , якщо ви не є відповідальним за її інтеграції в кореневу. Якщо ви цього не зробили, і ви попросили когось іншого інтегрувати його, оновіть свою головну гілку новими віддаленими комісіями - вони повинні містити все, що ви просили вас витягнути, - а потім видаліть свою гілку. Це гарантує, що у вас не буде проблем, якщо інший хлопець змінив щось.
ThiefMaster
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.