Как сравнить две версии в Bitbucket?


126

Моя команда использует Bitbucket для нашего репозитория git, и недавно мы начали использовать функцию pull request для проверки кода. Он отлично работает при первом обзоре, но если он проходит несколько итераций (то есть вносятся изменения и обновляется запрос на вытягивание), я хотел бы видеть ссылку только с новыми изменениями, внесенными с момента последнего обзора кода.

Я изучил функцию «сравнения», но пользовательский интерфейс выглядит так, как будто сравнивать можно только между ветвями. Есть ли простой способ получить разницу между двумя коммитами?


Ответы:


99

Это всего лишь небольшая модификация уже предоставленных ответов, но обычно я ищу добавление #diff в конец вместо #commit. Также, как другие, возможно, упоминали, лучшие результаты для меня обычно получаются, если сначала помещать более новый коммит, а второй - более старый, но это будет зависеть от ваших конкретных потребностей.

https://bitbucket.org/<OWNER>/<REPO>/branches/compare/<commit-hash>..<commit-hash-older>#diff

2
Я бы хотел, чтобы они добавили некоторый интуитивно понятный графический
интерфейс

1
Я попробовал этот ответ сегодня безуспешно. Может ли кто-нибудь проверить, действительно ли он работает с текущей версией Bitbucket?
Мартин

Я просто попробовал это с двумя коммитами из проекта tortoisehg, и, похоже, он все еще работает. Вот пример ссылки: bitbucket.org/tortoisehg/thg/branches/compare/…
Night Owl

1
Сработало отлично. Вставил owner/repo, скопировал хэши из списка коммитов, нажал Enter и бац. Хороший и легкий просмотр различий. 👍 (Почему это не очевидно , что в их графическом интерфейсе , однако ...)
Svish

1
@NightOwl - Вы используете сервер Stash / bitbucket? Если да, это работает только на bitbucket.org - jira.atlassian.com/browse/BSERV-2550
Cinderhaze

25

Попробуйте что-нибудь вроде:

https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<commit1>..<commit2>#commits

Взято с: https://bitbucket.org/site/master/issue/4779/ability-to-diff-between-any-two-commits.


1
Не работает в версии 4.14. Выдает ошибку мертвой ссылки, когда вы добавляете что-либо после compare/включения вышеупомянутого.
Юха Унтинен

То же самое с другим синтаксисом, упомянутым в bitbucket.org/site/master/issues/11657/…, который дает только общий 404 и путь под ним.
Юха Унтинен

25

Bitbucket теперь поддерживает сравнение тегов.

https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<tag1>%0D<tag2>

1
Это дает мне страницу, но не делает различий между TAGS, что я искал
tristanbailey

4
Для потомков это работает, но tag1должно начинаться с «v» и быть новее, tag2старше. Например, bitbucket.org/codsen/array-includes-with-glob/branches/compare/… - иначе не получится, и без «v» не сработает - оба случая приведут к 404.
revelt

Это помогло. https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<TAG1>%0D<TAG2>?w=1#diffЭто показывает разницу и игнорирует различия в пробелах.
Дамодар Башьял,

25

Поля поиска в раскрывающихся списках ветвей / тегов на странице сравнения на bitbucket.org теперь поддерживают вставленные хэши фиксации.

Итак, теперь вы можете просто перейти https://bitbucket.org/<owner>/<repo>/branches/compare/и вставить хэши в раскрывающиеся списки вместо взлома URL!

раскрывающийся список, затем вставьте хеш фиксации


Это сработало для меня, но мне нужно было отредактировать URL-адрес, чтобы он заканчивался на #diff вместо #commit, в соответствии с более ранним ответом, иначе он не показал никаких изменений.
MikeA 05

@ brian.keng, пожалуйста, отметьте это как правильный ответ?
Ахмед Хасн.

10

У меня Bitbucket Server, версия: v4.4.1

Ответ со мной был такой.

http://<path-to-my-server>/projects/<project-name>/repos/<repo-name>/commits/<old>?to=<new>

Я искал этот ответ, потому что в моем проекте мы используем подмодули git, а в запросах на вытягивание я могу видеть только старый sha фиксации и новый sha фиксации каждого подмодуля, который изменился. Нет ссылки, по которой можно щелкнуть или чего-то еще (о чем я знаю), чтобы перейти к этому просмотру различий. Этот URL-адрес позволяет мне также видеть, что изменилось в подмодулях.

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


13
Все это для меня на Bitbucket Server v4.9.0 показывает первую фиксацию. Он не сравнивает ревизии.
Джефф

@Jeff, ты пробовал переключить <старый> на <новый>, я мог их перепутать, если да, то я
исправлю

1
Да, такая же проблема. Фактически, по состоянию на ноябрь 2016 года (в этом месяце) Atlassian сообщает, что эта функция еще не поддерживается на сервере Bitbucket: jira.atlassian.com/plugins/servlet/mobile#issue/BSERV-2550 . Вы уверены, что он делает то, что, по вашему мнению, находится в вашей системе?
Джефф

Я обнаружил, что это работает для sudo для тегов, взяв хэш фиксации для каждого тега
tristanbailey

5

Формат просмотра сравнения Bitbucket следующий:

https://bitbucket.org/<owner>/<repo>/branches/compare/<new>%0D<old>

ged/ruby-pgРассмотрим пример (RubyGem, библиотека ruby):

Для сравнения двух выпусков (от v0.18.1 до v0.18.2)

https://bitbucket.org/ged/ruby-pg/branches/compare/v0.18.2%0Dv0.18.1

Для сравнения двух ревизий (от f97dd6c до 22a3612)

https://bitbucket.org/ged/ruby-pg/branches/compare/22a361201fd1d387d59a066b179124694a446f38%0Df97dd6cb4f34da6a62c4339887249115c7c25b9c




0

Создайте световой тег для коммитов, которые вы хотите сравнить. git -a [имя тега] [commit_sha]

Затем в Bitbucket в меню сравнения (в том, которое выполняет запросы на вытягивание) просто сравните с тегами.


0

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

https://<bitbucket-server>/projects/<PROJECT>/repos/<REPO>/pull-requests/<PR-NUM>/<commit-hash>?since=<commit-hash-older>


0

В командной строке

git log -p -1

Здесь показано сравнение с предыдущей версией.

git log -p -5

Это показывает последние 5 ревизий, сравнивая две последовательные версии (n & n-1, n-1 и n-2 и т. Д.).

Я понимаю, что это не идеально, чтобы показать прямую разницу между двумя конкретными версиями.

Ссылка https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History


-4

Через терминал запустите git на пути к вашему проекту:

git diff <new commit> <old commit>

Пример: git diff 26cf60f be5f978


2
Вот как сравнивать вещи с git в командной строке; вопрос был в том, как это сделать в Bitbucket, на сайте :)
Mark VY

bitbucket не имеет этих функций .. следовательно, строка cmd - единственный способ ..
Сиддхарт,

Это был самый полезный ответ. Согласен, в вопросе говорится, что битбакет, и этот ответ действительно предоставляет решение, которое хорошо работает с битбакетом, было хорошо, как и другие решения git.
ptsw 03
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.