Я хочу объединить две ветви, которые были разделены на некоторое время и которые хотели узнать, какие файлы были изменены.
Наткнулся на эту ссылку: 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"
Было интересно, если я что-то пропустил ...
git
branch
git-branch
git-diff
johannix
источник
источник
Ответы:
Чтобы сравнить текущую ветку с
master
веткой:Чтобы сравнить любые две ветви:
Читайте дальше
git diff
в официальной документации .источник
git diff --name-status your_branch...master
выводит изменения, которые произошли на master, так как your_branch был создан из негоПытаться
Это даст вам больше информации о каждом изменении, при этом используя то же количество строк.
Вы также можете перевернуть ветки, чтобы получить еще более четкое представление о разнице, если вы собираетесь объединить другим способом:
источник
config --global color.ui true
), вы можете пропустить --color. (У меня синдром ленивой клавиатуры.)git config --global color.ui true
- чтобы быть полным.fatal: ambiguous argument 'master..branchName': unknown revision or path not in the working tree.
Также имейте в виду, что git имеет дешевое и легкое ветвление. Если я думаю, что слияние может быть проблематичным, я создаю ветку для слияния. Так что, если
master
есть изменения, которые я хочу объединить, иba
моя ветвь требует кода от master, я мог бы сделать следующее:Конечным результатом является то, что я должен попробовать объединить одноразовую ветвь перед тем, как прикрутить свою ветку. Если я запутаюсь, я могу просто удалить
ba-merge
ветку и начать все сначала.источник
master
пока вы работаете над проверкой кода и исправлением конфликтов.Если кто-то пытается сгенерировать файл diff из двух веток:
источник
Существует также метод на основе графического интерфейса.
Вы можете использовать Gitk .
Запустить:
Щелкните правой кнопкой мыши на коммите ветки и выберите « Отметить этот коммит» во всплывающем меню.
Затем в правой нижней панели будет список измененных файлов, а в левой нижней панели - информация о различиях.
источник
Еще один вариант, использующий в этом случае meld:
Это позволяет не только увидеть различия между файлами, но также предоставляет простой способ указать и щелкнуть конкретный файл.
источник
-d
вариант?Обратите внимание, что git позволяет просто попробовать объединение и избежать любых проблем, если вам не нравится результат. Это может быть проще, чем искать потенциальные проблемы заранее.
источник
И если вы ищете изменения только среди определенных файлов, то:
branch1 не является обязательным, и ваша текущая ветвь (ветвь, в которой вы находитесь) будет рассматриваться по умолчанию, если branch1 не указан. например:
источник
Когда вы работаете совместно или над несколькими функциями одновременно, обычно вышестоящий или даже ваш мастер содержит работу, которая не включена в вашу ветку, и будет некорректно отображаться в основных различиях.
Если ваш Upstream мог переместиться, вы должны сделать это:
Простое использование git diff master может включать или не включать соответствующие изменения.
источник
Если вы используете IntelliJ IDEA , вы также можете сравнить любую ветку с текущей рабочей веткой. См. Http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 для получения дополнительной информации. Это доступно и в бесплатной версии .
источник
Есть две ветви, скажем,
Находясь в ветке А вы можете набрать
тогда это даст вам вывод
Важный момент по этому поводу
Текст внутри зеленого цвета присутствует внутри ветви A
Текст в красном присутствует в ветви B
источник
Здесь есть множество ответов, но я хотел бы добавить кое-что, что я обычно использую. Если вы находитесь в одной из веток, которые вы хотели бы сравнить, я обычно делаю одно из следующего. Ради этого ответа скажем, что мы находимся в нашей вторичной ветке. В зависимости от того, какой вид вам нужен в данный момент, будет зависеть от того, что вы выберете, но большую часть времени я использую второй вариант из двух. Первый вариант может быть удобен, если вы пытаетесь вернуться к исходной копии - в любом случае, оба сделайте свою работу!
Это сравнит master с веткой, в которой мы находимся (которая является вторичной), и исходный код будет добавленными строками, а новый код будет считаться удаленными строками.
ИЛИ
Это также будет сравнивать master с веткой, в которой мы находимся (которая является вторичной), и исходный код будет старыми строками, а новый код будет новыми строками.
источник
Если вы используете Github / Github Enterprise, вы можете использовать веб-интерфейс, нажав URL-адрес
/compare
вашего пути к хранилищу, например, https://github.com/http4s/http4s/compare . Вы можете выбрать ветку / коммит / тег, который хотите сравнить:И diff будет представлен в интерфейсе github по адресу,
/compare/{x1}...{x2}
где естьx2
иx1
есть ветка / commit / tag, которую вы хотите сравнить, например: https://github.com/http4s/http4s/compare/release-0.18.x ...мастерВы можете увидеть больше в Github Doc .
источник
Для людей, которые ищут решение с графическим интерфейсом, Git Cola имеет очень хороший "Branch Diff Viewer ( Diff -> Branches .. )".
источник
если
revision_n
иrevision_m
являются последовательными коммитами, то выводит так же, какgit show revision_m
источник
Вы также можете использовать визуальный diff .
Например, если вы используете Sourcetree , вы можете просто выбрать любые два коммита в представлении журнала .
(Я лично предпочитаю использовать GUI в большинстве случаев для этого, и я публикую это для тех, кто, возможно, не знаком с параметрами GUI.)
источник
Если вам нравится графический интерфейс и вы используете Windows, вот простой способ.
источник
Вы также можете легко сравнить ветви для измененных файлов, используя, например, TortoiseGit . Просто нажмите Обзор ссылок и выберите ветви, которые вы хотите сравнить.
Например, если вы сравните свою ветку с master, вы получите в результате список файлов, которые будут изменены в master, если вы решите объединить вашу ветку с master .
Помните, что у вас будет другой результат, если вы сравните master с your-branch и your-branch с master .
источник