Bagaimana cara membandingkan dua revisi di Bitbucket?


126

Tim saya menggunakan Bitbucket untuk repositori git kami dan kami baru-baru ini mulai menggunakan fungsionalitas permintaan tarik untuk ulasan kode. Ini berfungsi dengan baik pada ulasan pertama, tetapi jika melewati beberapa iterasi (yaitu, perubahan dibuat dan menarik permintaan diperbarui), saya ingin melihat tautan hanya dengan perubahan baru yang dibuat sejak tinjauan kode terakhir.

Saya melihat ke fungsionalitas "bandingkan" tetapi UI sepertinya hanya bisa membandingkan antar cabang. Apakah ada cara sederhana untuk mendapatkan perbedaan antara dua komitmen?


Pendahuluan bekerja dengan permintaan tarik atau tinjau tingkat komitmen tinjau fitur baru di bitbuckt 4.8
surfmuggle

Jawaban:


99

Ini hanya sedikit modifikasi pada jawaban yang sudah diberikan tetapi menambahkan #diff ke akhir, bukan #commits biasanya apa yang saya cari. Juga karena orang lain mungkin telah menyebutkan hasil terbaik bagi saya biasanya diperoleh dengan menempatkan komit yang lebih baru pertama dan yang lebih tua satu detik tetapi itu akan tergantung pada kebutuhan khusus Anda.

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

2
Saya berharap mereka akan menambahkan beberapa gui intuitif untuk melacak revisi komit (mirip dengan gerrit)
dolbi

1
Saya mencoba jawaban ini hari ini tanpa hasil. Adakah yang bisa memverifikasi bahwa itu masih berlaku dengan versi Bitbucket saat ini?
Martin Stålberg

Saya baru saja mencoba ini dengan dua komitmen dari proyek tortoisehg dan tampaknya masih berfungsi. Berikut ini contoh tautan: bitbucket.org/tortoisehg/thg/branches/compare/…
Night Owl

1
Bekerja dengan baik. Dimasukkan owner/repo, disalin hash dari daftar-komit, tekan enter, dan bam. Tampilan diff yang bagus dan mudah. 👍 (Kenapa ini bukan hal yang jelas dalam GUI mereka ...)
Svish

1
@NightOwl - Apakah Anda menggunakan server Stash / bitbucket? Jika demikian, ini hanya berfungsi di bitbucket.org
jira.atlassian.com/browse/BSERV-2550

25

Coba sesuatu seperti:

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

Diambil dari: https://bitbucket.org/site/master/issue/4779/ability-to-diff-between-any-two-commits


1
Tidak berfungsi di versi 4.14. Memberikan kesalahan pada Tautan Mati ketika Anda menambahkan sesuatu setelah compare/memasukkan yang di atas.
Juha Untinen

Sama dengan sintaks lain yang disebutkan dalam bitbucket.org/site/master/issues/11657/… yang hanya memberikan generik 404 dan path di bawahnya.
Juha Untinen

25

Bitbucket mendukung tag pembanding sekarang.

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

1
Ini memberi saya satu halaman tetapi tidak melakukan perbedaan antara TAGS, yang saya cari
tristanbailey

4
Untuk anak cucu, ini berfungsi, tetapi tag1harus dimulai dengan "v" dan lebih baru, tag2lebih tua. Misalnya, bitbucket.org/codsen/array-includes-with-glob/branches/compare/… - sebaliknya tidak akan bekerja dan tanpa "v" itu tidak akan berfungsi - kedua kasus akan mengarah ke 404.
revelt

Itu berhasil. https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<TAG1>%0D<TAG2>?w=1#diffIni menunjukkan perbedaan dan mengabaikan perbedaan spasi putih.
Damodar Bashyal

25

Bidang pencarian di dropdown cabang / tag pada halaman Bandingkan di bitbucket.org sekarang mendukung hash komit yang disisipkan.

Jadi sekarang Anda bisa pergi ke https://bitbucket.org/<owner>/<repo>/branches/compare/dan tempel hash ke dropdown bukannya peretasan URL!

drop down, lalu tempelkan di komit hash


Ini berfungsi untuk saya, tetapi saya perlu mengedit url untuk mengakhiri di #diff bukan #commits, seperti jawaban sebelumnya, jika tidak menunjukkan tidak ada perubahan.
MikeA

@ brian.keng bisakah Anda menandai ini sebagai jawaban yang benar?
Ahmed Hasn.

10

Saya memiliki Bitbucket Server, versi: v4.4.1

Jawaban saya adalah ini.

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

Saya mencari jawaban ini karena dalam proyek saya, kami menggunakan git submodules, dan dalam permintaan tarik saya hanya bisa melihat koma lama sha vs komit baru sha setiap submodule yang berubah. Tidak ada tautan untuk mengklik atau apa pun (yang saya tahu) untuk beralih ke tampilan berbeda ini. URL ini memungkinkan saya untuk melihat apa yang berubah dalam submodula juga.

Btw, jika seseorang tahu cara yang lebih baik membandingkan dua komit dalam submodul selama permintaan tarik, tolong beri tahu saya.


13
Semua ini bagi saya, pada Bitbucket Server v4.9.0, menunjukkan komit pertama. Itu tidak membandingkan revisi.
Jeff

@ Jeff, apakah Anda mencoba mengalihkan <old> ke <new> Saya mungkin telah mencampuradukkannya, jika demikian, maka saya akan memperbaiki jawaban saya
santiago arizti

1
Ya, masalah yang sama. Faktanya, per November 2016 (bulan ini), Atlassian mengatakan bahwa fitur ini belum didukung di Bitbucket Server: jira.atlassian.com/plugins/servlet/mobile#issue/BSERV-2550 . Apakah Anda yakin itu melakukan apa yang Anda pikirkan pada sistem Anda?
Jeff

Saya menemukan ini bekerja untuk sudo untuk tag, dengan mengambil hash komit untuk setiap tag
tristanbailey

5

Format tampilan perbandingan Bitbucket adalah sebagai berikut:

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

Diberikan contoh ged/ruby-pg(RubyGem, pustaka ruby):

Untuk membandingkan dua rilis (dari v0.18.1 ke v0.18.2)

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

Untuk membandingkan dua revisi (dari f97dd6c ke 22a3612)

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




0

Buat tag ringan untuk komit yang ingin Anda bandingkan. git -a [tagname] [commit_sha]

Kemudian di Bitbucket, di menu bandingkan (yang harus melakukan permintaan tarik) cukup bandingkan dengan tag.


0

Anda juga dapat melakukan ini di dalam permintaan tarik, katakan setelah seseorang mendorong ke cabang untuk memperbaiki temuan ulasan. Setahu saya belum ada UI untuk ini, tetapi Anda dapat memasukkan url seperti ini:

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



-4

Melalui terminal, jalankan git di jalur proyek Anda:

git diff <new commit> <old commit>

Ex: git diff 26cf60f be5f978


2
Ini adalah bagaimana membandingkan sesuatu dengan git, pada baris perintah; pertanyaannya adalah bagaimana melakukannya di Bitbucket, di situs web :)
Mark VY

bitbucket tidak memiliki fitur-fitur ini .. maka garis cmd adalah satu-satunya cara ..
Siddharth

Inilah jawaban yang menurut saya paling berguna. Menyetujui pertanyaan menyatakan bitbucket dan jawaban ini memang memberikan solusi yang berfungsi baik dengan bitbucket sama baiknya dengan solusi git lainnya.
ptsw
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.