Reputation: 17621
Comparing histories on the same branch is very confusing for me on GitHub. I struggle with this regularly:
If I use compare/master
in the URL after the GitHub repo name, I can compare against other branches in the repo based on the options in the drop-down menus.
https://help.github.com/en/articles/comparing-commits-across-time
However, I usually want to compare several commits on master.
How is this easily done? Could I get a more clear example?
Upvotes: 193
Views: 127719
Reputation: 2526
~N
to compare with N
prior commitsTips like these are often hidden in the docs so I wanted to note it here where people will find it.
https://github.com/facebook/react/compare/main~1..main
0415b18
https://github.com/facebook/react/compare/0415b18~4...0415b18
Upvotes: 5
Reputation: 52208
I visit this page often and the top answer is great.
Today I learned you can not only use the commit SHA, but also the release tag!
Here's an example:
https://github.com/rails/rails/compare/v7.0.4...v7.0.5
Upvotes: 1
Reputation: 301
If anyone needs a handy UI, here you go. I made it for my projects, searching and comparing are quite tricky when I troubleshoot for cases. It helps to quickly create comparisons between the branches/tags/commits(hashes) in several clicks.
Chrome extension: GitHub Compare Online
https://chrome.google.com/webstore/detail/github-compare-online/dglncilbcfbjkdpiabohoofgkfabhpab
Upvotes: 0
Reputation: 37797
TLDR: Just add /compare
at the end of the URL.
You can use the Github Compare UI, which will generate the URL for you. Replace ORG
and REPO
with your values. The UI only lists branches, but you can also type in any valid Tags (e.g. v1.0.0
) or Commit IDs (e.g. 1a2b3c
).
https://github.com/ORG/REPO/compare/
The URLs that get generated are in this format. You can also manually edit the URL with the REFs.
https://github.com/ORG/REPO/compare/REF1...REF2
You can also use "2 dots" (direct diff) instead of "3 dots" (diff from last common commit). Same as git diff A..B
vs git diff A...B
.
https://github.com/ORG/REPO/compare/REF1..REF2
If you want to compare across forks, then you need to add ORG2:
https://github.com/ORG/REPO/compare/REF1...ORG2:REF2
There is documentation, but I didn't think it was that clear: https://help.github.com/en/github/committing-changes-to-your-project/comparing-commits-across-time
Upvotes: 44
Reputation: 16053
You can use the following URL structure to compare commits in the same branch:
github.com/<username>/<repo_name>/compare/<commit1>...<commit2>
Replace values for username
, repo_name
, commit1(old commit)
& commit2(new commit)
acc. to your project.
The separator between the two commits is ...
i.e. 3 dots
.
Upvotes: 337
Reputation: 1896
If you need to compare changes within a branch but on different dates, this is how you can do it:
https://github.com/<ORG_NAME>/<REPO_NAME>/compare/HEAD..HEAD@{4 weeks ago}
https://github.com/<ORG_NAME>/<REPO_NAME>/compare/HEAD@{1 week ago}..HEAD@{2021-06-01}
Upvotes: 0
Reputation: 49
Custom tabs.
Peeps, we can add a compare "custom tab" to the repository, so that we can quickly access this compare tooling.
Here is how.
Now go to your repo landing page and you should now see your newly created custom tab along side the other default tabs (Pull requests, Settings and such)
Upvotes: 2
Reputation: 2404
Just go to https://github.com/USERNAME/REPOSITORY_NAME/compare
to achive the comparing page
Upvotes: 3
Reputation: 618
(branches if no pull request has been made)
bug/39
and master
)Notes:
(if a pull request has been made you can see the changes inside the PR, no longer via the compare url)
You can use the dropdowns to select different branches or tags:
take care of the order, eg. https://github.com/PyCQA/mccabe/compare/master...0.6.1 will give no results
you can choose between 2-dot (..) or 3-dot (...) notation
Upvotes: 2
Reputation: 164639
The article you linked has instructions for comparing commits.
The GitHub comparison tool will accept any revision. Branches, tags, commit IDs, even dates. If you want to compare between two commits, give it the commit IDs. Here's their example.
Upvotes: 5