2013-12-05 2 views
0

Немного поиграю с git diff, и я не могу найти способ сравнить две ветви для новых/измененных/удаленных файлов, идущих только из моего филиала.Git diff для того, что нового/изменено/удалено из моей текущей ветви

Скажем, мы получили master и dev, на котором я работаю. Я хотел бы git diff их, но получить только то, что я изменил в dev по сравнению с мастером.

ответ

2

Возможно, это то, что вы ищете:

git diff --name-status master dev 

См git help diff для полного объяснения всех возможных флагов в начале каждой строки, но наиболее часто будет (A) dded, (D) eleted и (M) официанты ...

Редактировать: На самом деле, если вы хотите получить только изменения, сделанные на dev, то указанная выше команда будет работать, но вы не хотите сравнивать dev с текущая головка master, но к месту, где dev отклонился от master, что обычно совпадает с git merge-base master dev. Таким образом, указанная выше команда будет изменена на:

git diff --name-status $(git merge-base master dev) dev 
+0

Это не будет означать ВСЕ различия между мастером и разработчиком. Включение новых файлов, созданных в master, но не представленных dev? – ALOToverflow

+0

Ну, да ... Но файл, введенный на 'master', но не на' dev', будет отображаться как удаленный. Если вы ищете изменения, сделанные только на 'dev', тогда' git log' принимает тот же параметр '--name-status' (например,' git log -name-status master..dev'), но вы ' я должен сделать некоторую пост-обработку, чтобы объединить информацию с каждой фиксации - я не думаю, что есть одна команда, чтобы сделать именно это ... – twalberg

+0

Собственно, поцарапать этот последний комментарий - обновил ответ с тем, что я считаю правильным решение ... – twalberg

Смежные вопросы