Как посмотреть, внесены ли изменения из одной ветки в другую? - PullRequest
0 голосов
/ 17 декабря 2018

Я хотел бы сказать, все ли мои изменения кода на BranchA уже применены к BranchB, независимо от того, одинаковы ли идентификаторы принятия или есть ли в BranchB тонны дополнительных изменений

Возможно ли это?

Пример:

 Branch A :  Commit 111... -> Add line 23
             Commit 222... -> Add line 24
 Branch B:   Commit 333... -> Add line 23
             Commit 444... -> Add line 24
             Commit 555... -> Remove line 24
             Commit 666... -> Add line 25
             Commit 777... -> Add line 26
What I basically would like to know is whether the two changes from Branch A are already applied by other commits on Branch B.
In this case, the output I would like to see is:

  - Add line 24

Why? Because this is the only change from Branch A not matching latest state of Branch B. I want to discard extra staff exclusive in Branch B (commits 666 and 777). I also want to consider latest state of Branch B, so even Branch B added at some point line 24, the latest state is removed, so that is the only differing change in regards to Branch A

При использовании сравнений и различий я обычно вижу весь дополнительный персонал из филиала B, который мне не интересен, так как я хочу знать только различия в контексте филиала A

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Вы также можете сделать:

git branch --contains BranchA

, чтобы получить список всех ветвей, которые имеют все коммиты BranchA.Если вы найдете свой BranchB в списке, вы в порядке.

А в случае множества ветвей, труба к grep:

git branch --contains BranchA | grep BranchB

Правитьпосле комментариев:

Если вам нужно обнаружить изменения независимо от коммитов, к которым они принадлежат, например, когда вы перебазировали или подобрали какую-то работу, как подсказывает kostix , вы можете сделать:

git log --cherry BranchB..BranchA

Но опять же, в то время как обнаружение изменений произойдет на уровне кода, независимо от хэшей коммитов, сам вывод будет по умолчанию передан как коммиты,Чтобы увидеть реальные изменения кода в этих коммитах, вы можете использовать опцию -p и, вероятно, сохранить ее в файле:

git log -p --cherry BranchB..BranchA > output.txt
0 голосов
/ 17 декабря 2018

Если вы объединяете все свои изменения, это можно сделать с помощью git log BranchB..BranchA (т. Е. «Дай мне все коммиты, которые находятся в A, а не в B»).Если это ничего не возвращает, применяются все изменения A.

Невозможно проверить это, если вы используете rebase или реализуете изменения совершенно иным способом, потому что ваши изменения могли быть позже изменены или полностью перезаписаны.Вы можете попытаться найти некоторые подходящие строки или создать программное обеспечение и посмотреть, есть ли у него нужные функции, но универсального способа не существует.

...