Как я стер ветку из истории github? - PullRequest
0 голосов
/ 23 февраля 2019

Я на самом деле не знал, как правильно задать этот вопрос, я надеюсь, что мой вопрос подходит.

Вот что случилось: я в основном работал над небольшим проектом с помощью git, и поэтому я создал новую ветку локально, котораяЗатем я нажал на свой пульт.Пока все хорошо.

Сегодня, когда я закончил свою ветку, я слил ее с мастером, а затем локально удалил ее (git branch -d branch_to_delete), а затем использовал git push, чтобы увидеть, как изменения появляются на github.Дело в том, что на github ветвь все еще существовала, и когда я смотрел на сеть, казалось, что ее никогда не было.

enter image description here

Странно, верно?Тогда я использовал git push origin -d to_delete_branch, и ветка, казалось, была удалена на github, но все равно не появится в сети ... Итак, мой вопрос, что я сделал не так?х) Или на самом деле что-то не так?Может быть, это должно выглядеть так ...

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Вероятно, это потому, что вместо слияния Git сделал «ускоренную перемотку вперед».

Допустим, у вас это есть.

A - B [master]
     \
      C - D [feature]

Ветви Git - это просто метки, указывающие на коммит.Коммиты A и B находятся на хозяине.И встроенные функции C и D.

Когда вы git merge feature Git замечаете, что вместо слияния он может просто переместиться master в D. Объединение не требуется.

A - B
     \
      C - D [feature]
            [master]

излом в B - C является искусственным, поэтому вы видите линейную историю.

A - B - C - D [feature]
              [master]

Это «ускоренная перемотка вперед».Git упомянул бы об этом, когда вы сделали git merge.

В отличие, скажем, вы сделали некоторую работу над мастером до слияния.

A - B - E [master]
     \
      C - D [feature]

Поскольку мастер и функция "разошлись" GitНеобходимо объединить две базы кода.git merge feature создаст коммит слияния, а ветвь будет сохранена в истории.

A - B - E - F [master]
     \     /
      C - D [feature]

По этой причине используйте git merge --no-ff, что означает «нет ускоренной перемотки вперед», чтобы гарантировать, что всегда есть «пузырь функции»даже после того, как ветка (на самом деле просто метка ветки) удаляется.Затем, просто взглянув на историю, вы узнаете, что C и D были созданы как логическая группа, и сообщение о коммите слияния на F может предоставить контекст, почему они были выполнены.

0 голосов
/ 23 февраля 2019

Ветвь - это просто имя .Это имя существует, указывающее на тот или иной коммит или другое, или оно не существует.В вашем случае он существовал, а теперь нет, потому что вы удалили его.

Это не имеет никакого отношения к любым коммитам , которые могли или не могли быть зафиксированыв эту ветку.Эти коммиты не теряются, потому что вы слили ветку в master перед удалением ее имени, поэтому вы видите их на диаграмме.

Если вопрос в том, почему эти коммиты появляются по прямой линии до master а не на "железной дороге", скорее всего, потому, что слияние с master было ускорено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...