Показывает, какие файлы были изменены между двумя ревизиями

StackOverflow https://stackoverflow.com/questions/822811

Вопрос

Я хочу объединить две ветви, которые были разделены на некоторое время, и хотел узнать, какие файлы были изменены.

Наткнулся на эту ссылку: http://linux.yyz.us/git-howto.html что было весьма полезно.

Инструменты для сравнения ветвей, с которыми я столкнулся, следующие:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

Было интересно, есть ли что-то вроде "git status master .. branch", чтобы видеть только те файлы, которые отличаются между двумя ветвями.

Без создания нового инструмента, я думаю, это самое близкое, что вы можете сделать сейчас (что, конечно, покажет повторы, если файл был изменен более одного раза):

  • git diff master..branch | grep "^diff"

Было интересно, не упустил ли я чего-нибудь...

Это было полезно?

Решение

Чтобы сравнить текущую ветвь с master филиал:

$ git diff --name-status master

Чтобы сравнить любые две ветви:

$ git diff --name-status firstbranch..yourBranchName

Читайте дальше git diff в официальная документация.

Другие советы

Попробуй

$ git diff --stat --color master..branchName

Это даст вам больше информации о каждом изменении, сохраняя при этом то же количество строк.

Вы также можете перевернуть ветви, чтобы получить еще более четкое представление о разнице, если бы вы объединили их другим способом:

$ git diff --stat --color branchName..master

Также имейте в виду, что git имеет дешевое и простое ветвление.Если я думаю, что слияние может быть проблематичным, я создаю ветку для слияния.Так что , если master имеет изменения, которые я хочу объединить, и ba является ли моя ветка, которой нужен код от master, я мог бы сделать следующее:

git checkout ba
git checkout -b ba-merge
git merge master
.... review new code and fix conflicts....
git commit
git checkout ba
git merge ba-merge
git branch -d ba-merge
git merge master

Конечным результатом является то, что я должен опробовать слияние на одноразовой ветке, прежде чем портить свою ветку.Если я запутаюсь в себе, я могу просто удалить ba-merge отделитесь и начните все сначала.

Если кто-то пытается сгенерировать файл diff из двух ветвей :

git diff master..otherbranch > myDiffFile.diff

Существует также метод, основанный на графическом интерфейсе.

Вы можете использовать гитк.

  1. Беги:

    $ gitk --all
    
  2. Щелкните правой кнопкой мыши на фиксации ветки и выберите Отметьте этот коммит во всплывающем меню.

  3. Щелкните правой кнопкой мыши на фиксации другой ветви и выберите Отличить это -> отмеченный коммит или Разница с пометкой commit -> это.

Затем на правой нижней панели появится список измененных файлов, а на левой нижней панели - сведения о различиях.

Еще один вариант, использующий meld в данном случае:

git difftool -d master otherbranch

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

Обратите внимание, что git позволяет легко просто опробовать слияние и отказаться от любых проблем, если вам не нравится результат.Это может быть проще, чем заранее искать потенциальные проблемы.

И если вы ищете изменения только среди определенных файлов, то:

git diff branch1 branch2 -- myfile1.js myfile2.js

branch1 является необязательным, и ваша текущая ветка (ветка, в которой вы находитесь) будет учитываться по умолчанию, если branch1 не указан.например, g:

git diff master -- controller/index.js

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

Если ваш Восходящий поток, возможно, переместился, вы должны сделать это:

git fetch
git diff origin/master...

Простое использование git diff master может включать или не включать соответствующие изменения.

Если вы используете ИДЕЯ IntelliJ, вы также можете сравнить любую ветвь с вашей текущей рабочей ветвью.Видишь http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 для получения дополнительной информации.Это доступно в бесплатная версия также.

Допустим, есть две ветви

  • A (Ветка, над которой вы работаете)
  • B (Другая ветвь, с которой вы хотите сравнить)

Находясь в ветке А, вы можете ввести

git diff --color B

тогда это даст вам результат

enter image description here

Важным моментом в этом является

  1. Текст, выделенный зеленым цветом, находится внутри, присутствует в ветке A

  2. Текст, выделенный красным, присутствует в ветке B

Здесь есть много ответов, но я хотел добавить кое-что, что я обычно использую.ЕСЛИ вы находитесь в одной из ветвей, которые вы хотели бы сравнить, я обычно делаю одно из следующих действий.Ради этого ответа мы скажем, что мы находимся в нашей вторичной ветви.В зависимости от того, какой вид вам нужен в данный момент, будет зависеть, какой вы выберете, но в большинстве случаев я использую второй вариант из двух.Первый вариант может быть удобен, если вы пытаетесь вернуться к исходной копии - в любом случае, оба варианта выполнят свою работу!

Это позволит сравнить master с веткой, в которой мы находимся (которая является вторичной), и исходным кодом будут добавленные строки, а новый код будет считаться удаленными строками

git diff ..master

или

Это также позволит сравнить master с веткой, в которой мы находимся (которая является вторичной), и исходным кодом будут старые строки, а новым кодом будут новые строки

git diff master..

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

  1. Скачать WinMerge
  2. Проверьте две ветви в разных папках
  3. Сравните папку за папкой, используя WinMerge.Вы также можете легко вносить изменения, если одна из ветвей является той, над которой вы работаете.
git diff revision_n revision_m

если revision_n и revision_m являются последовательными фиксациями, то он выводит то же самое, что и git show revision_m

Для людей, которые ищут решение с графическим интерфейсом, Гит - Кола имеет очень приятный "просмотрщик различий в ветвях (Разница -> Ветви..).

Вы также можете использовать визуальная разница.

Например, если вы используете Исходное Дерево, вы можете просто выберите любые две фиксации в режиме просмотра журнала.

(Лично я в большинстве случаев предпочитаю использовать для этого графический интерфейс, и я публикую это для тех, кто, возможно, не знаком с опциями графического интерфейса.)

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

Например, если вы сравните ваш филиал с мастер в результате вы получите список файлов, которые будут изменены в мастер если вы решите объединиться ваш-филиал в мастер.

Помните, что у вас будет другой результат, если вы сравните мастер с ваш-филиал и ваш-филиал с мастер.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top