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?

brian.keng
sumber
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
Burung hantu malam
sumber
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

Aguardientico
sumber
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>
Tao
sumber
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

Alastair Wilkes
sumber
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.

santiago arizti
sumber
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

Juanito Fatas
sumber
4

PERGI ke repositori bitbucket Anda> Cabang masukkan deskripsi gambar di sini

Klik pada ikon menu dan bandingkan

Harsh Phoujdar
sumber
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.

Cyrille Cormier
sumber
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>

Isaac Baker
sumber
0

Pada prompt perintah

git log -p -1

Ini menunjukkan perbandingan dengan versi sebelumnya.

git log -p -5

Ini menunjukkan 5 revisi terakhir, membandingkan dua versi berturut-turut (n & n-1, n-1 & n-2, dll).

Saya menyadari, ini tidak ideal untuk menunjukkan perbedaan langsung antara dua versi spesifik.

Ref. https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History

Anirudha Singh
sumber
-4

Melalui terminal, jalankan git di jalur proyek Anda:

git diff <new commit> <old commit>

Ex: git diff 26cf60f be5f978

Raul B Santos
sumber
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