How to compare two commits in BitBucket?
Asked Answered
C

8

105

I was trying to compare two commits on the same branch (master in this case) in BitBucket and did not find a good answer in any forum, so decided to try their client, SourceTree to see if installing it locally would help and it did.

Therefore, thought it might be useful to add question and answer here.

Christophany answered 30/6, 2018 at 15:5 Comment(0)
C
9

Best way I found to solve this at the time was via SourceTree app (for mac in my case). it will automatically show you the latest changes and you can compare specific commits if you like as well.

Thought I would add this here, as did not find a good answer for this question anywhere. See screenshot showing this functionality

Update, June 29, 2020: Based on answers from reed_do_it and scott-carpenter, went to check this and found that indeed BitBucket now have this feature on the website UI. The version i see on the site, at least for me, is what scott is showing above.

Here is the UI I saw:

  1. On Bitbucket site, go to any repo you have bitbucket repos
  2. Select one of them and click on the file you want to compare select a file in the repo
  3. Click on the Source listbox and select 'Compare' enter image description here
  4. Select the versions you want to compare diff As reed_do_it said, the URL changes with your selection, so you can send someone the link and if they have access to the repo, they can see it as well
Christophany answered 30/6, 2018 at 15:5 Comment(0)
M
109

BitBucket Cloud (bitbucket.org) supports commit comparison on the branch compare page:

  1. Navigate to a repo
  2. Click the '+' menu in the left-nav
  3. Click 'Compare branches and tags'
  4. Paste your commit hashes into the search fields in the branch/tag dropdowns
  5. Click 'Compare'
Merrymerryandrew answered 5/7, 2018 at 16:8 Comment(11)
Thank you! was not aware of this option. However, it did not work for me for two commits on the same branch (master) - not sure why.Christophany
-1 even it this did work (there's no clickable 'Compare' and clicking 'diff' says "There are no changes"), it would be significantly better to provide a drop-down option on any commit page -- to compare it with any other commit.Scrawny
This worked for me. Even with commits on the same branch. +1Desperado
we use v5.15.1 and I can't do point 4, because adding either short or long hash does not find anythingForrestforrester
Worked for me on current (20190904) bitbucket cloud when entering whole length commitNihon
@BobStein I totally agree that bitbucket ux is horrible in this particular situation but I fail to understand how is Alastair Wilkes fault that is like that (unless he implemented it - if that's the case... shame mate... even cli "git diff c1 c2" makes a better job for commits). We should vote the answer not the bitbucket implementation. So I think the -1 is undeserved (+1 to "over"compensate).Agile
@Agile I agree with this principle, one should not shoot the messenger. Except in this case the message is misleading as well as disappointing. -1 to &AlastairWilkes for these instructions not working. (I get "There are no changes." when there are.) -5 to bitbucket for bad UX. -10 to Stack Overflow for downvotes being unable to discriminate these nuances. Most of all, I downvoted this answer because it was not useful for me (or #ng10 or $LukasSalich). If this answer works for you, by all means upvote it. At best it must be incomplete, needing more steps or restrictions of some kind.Scrawny
This does not currently work for me when someone has updated a pull request with "removed 1 commit and added 1 commit". There's no way to see what they actually changed using bitbucket, even though both commits are in the repo. You can ask for the diff between them and it appears to work, but in fact you are only shown the diff between one of them and their common parent.Enucleate
This comparison shows the »tentative merge« that would result if a PR was created for the given revs. I.e. it shows the difference from the merge base to the source, instead of the difference between source and destination.Short
Does not exist in the current UI anymore. See joseluisbz's answer for a solution.Aftergrowth
Update: Replace "2. Click the '+' menu in the left-nav" with "Click the '...' menu in the left-nav" and it works the same.Towpath
S
58

This URL worked for me: https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<commit1>..<commit2>#diff, short hashes can also be used.

Screenshot:

enter image description here

Slopwork answered 23/9, 2019 at 8:21 Comment(6)
In April 2020 using the web interface this works as long as you put the commits in the right order (I used the full length sha's but possibly the short ones would work as well).Schuss
Clarification to @glaucon's comment... in the suggested answer, <commit1> and <commit2> represent source and destination respectively.Kkt
This just says there are no changes. Maybe it's because it cannot handle comparing 2 commits on the same branchKwan
@AlanMacdonald just re-tested on nearby commits from one branch: works fine. Updated the answer with screenshot.Slopwork
I found a defect in bitbucket. If you put the branches in wrong order you see no diff, but crucially the UI has an icon for swapping the order round. When you press it, it visibly changes the commit ids round in order but no diff shows. However if you manually edit the url parameter to swap the order the diff does show.Kwan
THANK YOU @AlanMacdonald, for the final clarification there! The "switch commits" (arrows) UI control does not work for me, either! And it's very not-intuitive that the commit order depends on having the NEWER commit FIRST.Unsling
B
18

I found this feature on the BitBucket web GUI.

Arrow to BitBucket Compare feature on Web UI

Instructions:

  1. Click the circles icon on the left toolbar ("Compare" button).
  2. Enter "Source" and "Destination," which are the 2 commits to compare. On the right you can choose what to search for by clicking "Branches," "Tags," or "Commits" over the text box. (You can make different selections for finding Source and Destination, i.e. search for one by tag and the other by commit hash.)

This is an important feature, because it gives you a URL you can share with others.

UPDATE: Others have commented this shows the diff for a resultant merge, so it doesn't work exactly like git diff. I will try to update when I get a chance to experiment with it. I'm not using BitBucket on a day-to-day basis anymore.

Blowzed answered 23/6, 2020 at 20:44 Comment(3)
thank you! found this as well, only the UI is showing differently to meChristophany
Yes, but this comparison show completely different info comparing to the git diff with the same commits !Anthropography
This comparison shows the »tentative merge« that would result if a PR was created for the given revs. I.e. it shows the difference from the merge base to the source, instead of the difference between source and destination.Short
E
17

I came across this question while looking for a way to compare a single file across two different commits. The instructions for doing so are slightly different than those above, so I wanted to share:

  1. Browse to the file in question in the "Source" view
  2. Drop down the file's view option and select "Diff":

'Diff' view option

  1. Once the file's diff has loaded, drop down the history options and select the commits that you want to compare between:

Select commits to compare

Entire answered 1/1, 2020 at 23:24 Comment(1)
This comparison shows the »tentative merge« that would result if a PR was created for the given revs. I.e. it shows the difference from the merge base to the source, instead of the difference between source and destination.Short
W
10

In the Left Pane select Source, then in the three dots select the Compare branches or tags option.

enter image description here

The before action moves to Branches later select respectively the Branch/Tag.

enter image description here

Wahl answered 11/8, 2022 at 2:51 Comment(2)
This is the only solution that works with the current Bitbucket UI.Aftergrowth
True as of 30th January 2023.Fiora
C
9

Best way I found to solve this at the time was via SourceTree app (for mac in my case). it will automatically show you the latest changes and you can compare specific commits if you like as well.

Thought I would add this here, as did not find a good answer for this question anywhere. See screenshot showing this functionality

Update, June 29, 2020: Based on answers from reed_do_it and scott-carpenter, went to check this and found that indeed BitBucket now have this feature on the website UI. The version i see on the site, at least for me, is what scott is showing above.

Here is the UI I saw:

  1. On Bitbucket site, go to any repo you have bitbucket repos
  2. Select one of them and click on the file you want to compare select a file in the repo
  3. Click on the Source listbox and select 'Compare' enter image description here
  4. Select the versions you want to compare diff As reed_do_it said, the URL changes with your selection, so you can send someone the link and if they have access to the repo, they can see it as well
Christophany answered 30/6, 2018 at 15:5 Comment(0)
S
6

@kambala's solution is correct but with a simple change. The URL will be encoded and you can't simply use '...'

This url will work

https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<COMMIT_1>%0D<COMMIT_2>

Supposed answered 10/11, 2022 at 12:20 Comment(0)
C
1

I do it like this under Bitbucket v5.9.0.

  1. Set a tag on the 2 commits you want to compare (hope you have the rights)
  2. Select "Pull Requests" on the left bar
  3. Press the "Create Pull Request" button in the upper right corner
  4. Now you can select the "from" and "to" tags. Do not generate the pull request, just compare the "Diff"

I don't know why this very primitive functionality is not available without having to use some "tricks".

Capitation answered 5/3, 2019 at 8:24 Comment(2)
bitbucket has had a standalone "compare" view for a while, you don't need to use the pull request creation pageJelle
Using tags is currently (and sadly) the best option, I thinkResidency

© 2022 - 2024 — McMap. All rights reserved.