Есть несколько вопросов, которые близки к тому, что я спрашиваю, но не совсем одинаковые.
Я хочу перечислить все ветви, созданные из ветки git в любой момент истории этой ветки .
Ответы на похожие вопросы включают использование git branch --contains [branch-name]
, но это не дает того, чего я добиваюсь.
Примите во внимание следующее (просто) пример и дерево:
$ git init
$ git checkout -b master
$ touch master.txt
$ git add .
$ git commit -m "Initial master commit"
$ git checkout -b develop
$ touch develop.txt
$ git add .
$ git commit -m "Initial develop commit"
$ git checkout -b feature/a
$ touch a.txt
$ git add .
$ git commit -m "feature/a commit"
$ git checkout develop
$ git checkout -b feature/b
$ touch b.txt
$ git add .
$ git commit -m "feature/b commit"
master
\
\ feature/a
\ /
develop
\
feature/b
Если я хочу получить все ветви, содержащие ветку develop
, я могу сделать git branch --contains develop
и получу следующий результат:
$ git branch --contains develop
develop
feature/a
feature/b
Круто. Но давайте использовать более реальный пример (-
- это коммиты), где есть несколько ветвей объектов, которые объединяются в разное время:
$ git checkout develop
$ git merge feature/a
$ git branch -d feature/a
master
\
\ feature/a
\ / \
develop -
\
feature/b
В этом случае feature/a
было завершено, объединены в разработку, а затем удалены. И теперь последний коммит для develop
опережает feature/b
, над которым все еще ведется работа. Теперь, если я запускаю git branch --contains develop
, я получаю следующее:
$ git branch --contains develop
develop
Не круто. Я хотел бы видеть и develop
, и feature/b
, так как feature/b
был разветвлен от более старого коммита develop
.
У меня сложный проект с большим количеством функций, исправление ошибок, улучшения и т. д. ветви, которые были сделаны из различных точек в жизни develop
, и не все из них были извлечены, и сейчас git branch --contains develop
довольно бесполезно рассказывать мне, какие ветви выдающиеся.