Как я могу получить список веток, появляющихся из любой ветки в git? - PullRequest
3 голосов
/ 04 декабря 2009

Как я могу получить список веток, появляющихся из любой ветки в git?

Кроме того, в чем разница между командами fetch и pull в git?

Ответы [ 4 ]

4 голосов
/ 04 декабря 2009
git fetch
git checkout <branch of interest>
git log --children <commit>

распечатает список коммитов-потомков для данного, который частично отвечает на ваш вопрос.

pull выполняет выборку и пытается объединить

выборка не сливается

2 голосов
/ 04 декабря 2009

Как я могу получить список веток, появляющихся из любой ветви в git?

В зависимости от того, что вы подразумеваете здесь под «появлением» (и если предположить, что вы имели в виду «данную ветвь», а не «любую ветвь»), это будет либо git branch --contains <branch>, либо git branch --merged <branch>.

Fro Страница git-branch :

<b>SYNOPSIS</b>
<i>git branch</i> [--color | --no-color] [-r | -a]
      [-v [--abbrev=<length> | --no-abbrev]]
      [(--merged | --no-merged | --contains) [<commit>]]
<b>DESCRIPTION</b>

С --contains, показывает только ветви, которые содержат именованный коммит (другими словами, ветви, коммиты наконечника которых являются потомки именованного коммита). При --merged только ветви сливаются в именованный коммит (т.е. ветви, у которых коммиты достижимы из указанного коммита) будут перечислены. С --no-merged только ветви не слились в названные коммит будет в списке. Если аргумент отсутствует, по умолчанию используется значение HEAD (т. Е. Конец текущей ветви).

0 голосов
/ 25 апреля 2019

Вид плей-офф @CB Bailey, но упрощенный. Я использую следующую команду, чтобы показать все ветви, содержащие коммит.

git branch -a --contains <commit>

0 голосов
/ 04 декабря 2009

Второй вопрос проще. fetch просто обновляет удаленные стеллажные ветви вашего текущего хранилища из удаленного хранилища (обычно источника), pull выполняет выборку, а затем объединяет удаленную ветку с текущей извлеченной веткой. Точные ветки, извлекаемые и объединяемые, могут зависеть от конфигурации, но git пытается «сделать все правильно» и преуспевает в большинстве распространенных установок.

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

Что вы можете сделать, это посмотреть на все ветви git branch, git branch -a или git show-ref --heads для более скриптовой версии и посмотреть, как ветви связаны с симметричной разницей.

git log --oneline --left-right branch-a...branch-b

Это покажет коммиты, которые не являются общими для двух ветвей, с префиксом < или >, чтобы показать, на какой ветке они находятся.

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