จะเปรียบเทียบการแก้ไขสองครั้งใน Bitbucket ได้อย่างไร?


126

ทีมของฉันกำลังใช้ Bitbucket สำหรับที่เก็บ git ของเราและเราเพิ่งเริ่มใช้ฟังก์ชัน pull request สำหรับการตรวจสอบโค้ด ใช้งานได้ดีในการตรวจสอบครั้งแรก แต่หากผ่านการตรวจสอบซ้ำหลายครั้ง (นั่นคือมีการเปลี่ยนแปลงและอัปเดตคำขอดึง) ฉันต้องการเห็นลิงก์ที่มีเพียงการเปลี่ยนแปลงใหม่ที่เกิดขึ้นตั้งแต่การตรวจสอบโค้ดครั้งล่าสุด

ฉันดูฟังก์ชัน "เปรียบเทียบ" แต่ดูเหมือนว่า UI จะเปรียบเทียบระหว่างสาขาได้เท่านั้น มีวิธีง่ายๆในการสร้างความแตกต่างระหว่างสองคอมมิตหรือไม่?


ข้อมูลเบื้องต้นเกี่ยวกับการทำงานกับคำขอดึงหรือ การตรวจสอบระดับคอมมิตคุณลักษณะใหม่ใน bitbuckt 4.8
surfmuggle

คำตอบ:


99

นี่เป็นเพียงการแก้ไขเล็กน้อยสำหรับคำตอบที่ให้ไปแล้ว แต่การเพิ่ม #diff ต่อท้ายแทน #commits มักจะเป็นสิ่งที่ฉันกำลังมองหา เช่นเดียวกับที่คนอื่น ๆ อาจกล่าวถึงผลลัพธ์ที่ดีที่สุดสำหรับฉันมักจะได้รับจากการวางการกระทำที่ใหม่กว่าก่อนและที่เก่ากว่าหนึ่งวินาที แต่จะขึ้นอยู่กับความต้องการเฉพาะของคุณ

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

2
ฉันหวังว่าพวกเขาจะเพิ่ม gui ที่ใช้งานง่ายเพื่อติดตามการแก้ไขคอมมิต (คล้าย ๆ กับ gerrit)
dolbi

1
ฉันลองคำตอบนี้ในวันนี้โดยไม่ประสบความสำเร็จ ใครสามารถตรวจสอบได้ว่ายังใช้ได้กับ Bitbucket เวอร์ชันปัจจุบันหรือไม่
Martin Stålberg

ฉันเพิ่งลองสิ่งนี้กับสองข้อผูกพันจากโครงการเต่าและดูเหมือนว่าจะได้ผล นี่คือลิงค์ตัวอย่าง: bitbucket.org/tortoisehg/thg/branches/compare/…
Night Owl

1
ทำงานได้ดีมาก แทรกowner/repoคัดลอกแฮชจากรายการคอมมิตกด Enter และแบม มุมมองที่ดีและใช้งานง่าย 👍 (ทำไมสิ่งนี้ถึงไม่ชัดเจนใน GUI ของพวกเขาอย่างไรก็ตาม ... )
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 ให้ข้อผิดพลาด Dead Link เมื่อคุณเพิ่มสิ่งใด ๆ หลังจากcompare/รวมข้างต้น
Juha Untinen

เช่นเดียวกับไวยากรณ์อื่น ๆ ที่กล่าวถึงในbitbucket.org/site/master/issues/11657/…ซึ่งให้เพียง 404 ทั่วไปและเส้นทางภายใต้มัน
Juha Untinen

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สิ่งนี้แสดงความแตกต่างและละเว้นความแตกต่างของช่องว่าง
Damodar Bashyal

25

ช่องค้นหาในรายการแบบเลื่อนลงสาขา / แท็กในหน้าเปรียบเทียบบน bitbucket.org รองรับแฮชคอมมิตที่วางแล้ว

ตอนนี้คุณสามารถไปที่https://bitbucket.org/<owner>/<repo>/branches/compare/และวางแฮชลงในดรอปดาวน์แทนการแฮ็ก URL!

เลื่อนลงจากนั้นวางแฮชคอมมิต


สิ่งนี้ใช้ได้ผลสำหรับฉัน แต่ฉันต้องแก้ไข url เพื่อลงท้ายด้วย #diff แทนที่จะเป็น #commits ตามคำตอบก่อนหน้านี้มิฉะนั้นจะไม่มีการเปลี่ยนแปลง
MikeA

@ brian.keng ช่วยทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้องได้ไหม
อาเหม็ดฮาสน์

10

ฉันมีเซิร์ฟเวอร์ Bitbucket เวอร์ชัน: v4.4.1

คำตอบของฉันคือสิ่งนี้

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

ฉันกำลังมองหาคำตอบนี้เพราะในโปรเจ็กต์ของฉันเราใช้โมดูลย่อย git และในการร้องขอแบบดึงฉันจะเห็นเฉพาะการกระทำเก่าเทียบกับค่าคอมมิตใหม่ของแต่ละโมดูลย่อยที่เปลี่ยนแปลง ไม่มีลิงค์ให้คลิกหรืออะไร (ที่ฉันรู้จัก) เพื่อข้ามไปยังมุมมองที่แตกต่างนี้ URL นี้ช่วยให้ฉันดูสิ่งที่เปลี่ยนแปลงในโมดูลย่อยได้เช่นกัน

Btw ถ้ามีใครรู้วิธีที่ดีกว่าในการเปรียบเทียบการกระทำสองรายการในโมดูลย่อยระหว่างคำขอดึงโปรดแจ้งให้เราทราบ


13
ทั้งหมดนี้สำหรับฉันบน Bitbucket Server v4.9.0 คือแสดงการกระทำครั้งแรก ไม่ได้เปรียบเทียบการแก้ไข
เจฟ

@ เจฟฟ์คุณลองเปลี่ยน <old> เป็น <ใหม่> ฉันอาจจะผสมมันขึ้นถ้าเป็นเช่นนั้นฉันจะแก้ไขคำตอบของฉัน
santiago arizti

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 ไลบรารีทับทิม):

เพื่อเปรียบเทียบสองรุ่น (จาก 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 [tagname] [commit_sha]

จากนั้นใน Bitbucket ในเมนูเปรียบเทียบ (รายการที่จะดึงคำขอ) ให้เปรียบเทียบกับแท็ก


0

นอกจากนี้คุณยังสามารถทำสิ่งนี้ภายในคำขอดึงข้อมูลได้โดยพูดหลังจากที่มีคนผลักดันไปยังสาขาเพื่อแก้ไขผลการตรวจสอบ จากความรู้ของฉันยังไม่มี UI สำหรับสิ่งนี้ แต่คุณสามารถป้อน 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 diff <new commit> <old commit>

Ex: git diff 26cf60f be5f978


2
นี่คือวิธีเปรียบเทียบสิ่งต่างๆกับคอมไพล์ในบรรทัดคำสั่ง คำถามคือทำอย่างไรใน Bitbucket บนเว็บไซต์ :)
ทำเครื่องหมาย VY

bitbucket ไม่มีคุณสมบัติเหล่านี้ .. ดังนั้น cmd line จึงเป็นวิธีเดียว ..
Siddharth

นี่คือคำตอบที่ฉันพบว่ามีประโยชน์มากที่สุด เห็นด้วยกับคำถามที่ระบุว่า bitbucket และคำตอบนี้ให้คำตอบที่ทำงานได้ดีกับ bitbucket เช่นเดียวกับโซลูชัน git อื่น ๆ
ptsw
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.