Git - Как найти фактические коммиты, сделанные в определенной ветке Git - PullRequest
1 голос
/ 29 марта 2019

Я создал ветку t1 из master ветви и сделал много коммитов в ветке t1.Затем я сделал несколько коммитов в других ветках, слил другие ветки в t1 и т. Д.

Теперь я хочу find only those commits which I had made in branch t1 (не те коммиты, которые пришли из основной ветви или любой другой ветви в результате слияния)

Ответы [ 2 ]

1 голос
/ 29 марта 2019

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

Имя локальной ветки может быть произвольным. Вы можете создать локальную ветку foo и отправить ее новые коммиты в ветку bar. Если пуш успешен, мы можем быть уверены, что коммиты сделаны для bar. Но это не гарантирует, что коммиты будут сделаны в локальном bar. Если вам разрешено напрямую нажимать foo на bar без запроса на получение, система даже не имеет постоянной записи, что эти коммиты передаются на bar. Вы можете найти некоторые подсказки в сообщении коммита коммита слияния, но сообщения коммита тоже могут быть подделаны, не говоря уже о том, что у вас могут не быть строгих правил форматирования сообщений коммита. Когда пересылка выполняется быстро, сам коммит слияния даже не существует. У reflogs также могут быть некоторые подсказки, но они также ненадежны, поскольку они связаны с локальными ветвями и не являются постоянными.

При систематическом потоке запросов на получение запросов хостинговые сервисы, такие как Github, Gerrit и Gitlab, имеют надежные базы данных для записи, какие коммиты объединяются в конкретную ветку. Они предоставляют API или интерфейсы, которые позволяют пользователям получать эти записи из баз данных.

В вашем случае вы можете попробовать:

git log t1 ^master --first-parent --no-merges

Но результат не заслуживает доверия в теории.

0 голосов
/ 29 марта 2019

Как объяснено в " Git: Как вывести список коммитов в этой ветке, но не из объединенных ветвей ", вы можете начать с (log --no-merges):

git log --no-merges t1 master

Это позволит избежать коммитов слияния.

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