Làm thế nào để so sánh hai phiên bản trong Bitbucket?


126

Nhóm của tôi đang sử dụng Bitbucket cho kho git của chúng tôi và gần đây chúng tôi đã bắt đầu sử dụng chức năng yêu cầu kéo để đánh giá mã. Nó hoạt động tốt trong lần đánh giá đầu tiên, nhưng nếu trải qua nhiều lần lặp (nghĩa là thay đổi được thực hiện và yêu cầu kéo được cập nhật), tôi muốn thấy một liên kết chỉ với những thay đổi mới được thực hiện kể từ lần đánh giá mã cuối cùng.

Tôi đã xem xét chức năng "so sánh" nhưng giao diện người dùng có vẻ như chỉ có thể so sánh giữa các chi nhánh. Có một cách đơn giản để có một sự khác biệt giữa hai lần xác nhận?


Giới thiệu làm việc với các yêu cầu kéo hoặc xem xét mức cam kết một tính năng mới trong bitbuckt 4.8
lướt web

Câu trả lời:


99

Đây chỉ là một sửa đổi nhỏ cho các câu trả lời đã được đưa ra nhưng thêm #diff vào cuối thay vì #commits thường là thứ tôi đang tìm kiếm. Ngoài ra, như những người khác có thể đã đề cập đến kết quả tốt nhất đối với tôi thường thu được bằng cách đặt cam kết mới hơn trước và một giây cũ hơn nhưng điều đó sẽ phụ thuộc vào nhu cầu cụ thể của bạn.

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

2
Tôi ước họ sẽ thêm một số gui trực quan để theo dõi sửa đổi cam kết (tương tự như gerrit)
dolbi

1
Tôi đã thử câu trả lời này ngày hôm nay mà không thành công. Bất cứ ai cũng có thể xác minh rằng nó vẫn hợp lệ với phiên bản hiện tại của Bitbucket?
Martin Stålberg

Tôi vừa thử điều này với hai lần xác nhận từ dự án tort torthg và nó vẫn xuất hiện. Dưới đây là một liên kết ví dụ: bitbucket.org/tortoirhg/thg/branches/compare/ mẹo
Night Owl

1
Làm việc tuyệt vời. Đã chèn owner/repo, sao chép các giá trị băm từ danh sách cam kết, nhấn enter và bam. Đẹp và dễ dàng xem khác nhau. (Tại sao điều này không phải là một điều hiển nhiên trong GUI của họ ...)
Svish

1
@NightOwl - Bạn đang sử dụng máy chủ Stash / bitbucket? Nếu vậy, điều này chỉ hoạt động trên bitbucket.org - jira.atlassian.com/browse/BSERV-2550
Cinderhaze

25

Hãy thử một cái gì đó như:

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

Lấy từ: https://bitbucket.org/site/master/su/4779/ability-to-diff-b between -any-two-commits


1
Không hoạt động trong phiên bản 4.14. Đưa ra lỗi Liên kết chết khi bạn thêm bất cứ thứ gì sau khi compare/bao gồm cả ở trên.
Juha Untinen

Tương tự với cú pháp khác được đề cập trong bitbucket.org/site/master/issues/11657/ , chỉ cung cấp một 404 chung và đường dẫn bên dưới nó.
Juha Untinen

25

Bitbucket hỗ trợ so sánh các thẻ ngay bây giờ.

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

1
Điều này mang lại cho tôi một trang nhưng không khác biệt giữa TAGS, đó là điều tôi đang tìm kiếm
tristanbailey

4
Đối với hậu thế, nó hoạt động, nhưng tag1phải bắt đầu bằng "v" và mới hơn, tag2cũ hơn. Ví dụ: bitbucket.org/codsen/array-includes-with-glob/branches/compare/ mẹo - cách khác xung quanh sẽ không hoạt động và không có "v" nó sẽ không hoạt động - cả hai trường hợp sẽ dẫn đến 404.
revelt

Điều đó đã lừa https://bitbucket.org/<OWNER>/<PROJECT>/branches/compare/<TAG1>%0D<TAG2>?w=1#diffĐiều này cho thấy sự khác biệt và bỏ qua sự khác biệt khoảng trắng.
Damodar Bashyal

25

Các trường tìm kiếm trong danh sách thả xuống của nhánh / thẻ trên trang So sánh trên bitbucket.org hiện hỗ trợ băm cam kết đã dán.

Vì vậy, bây giờ bạn chỉ có thể đi đến https://bitbucket.org/<owner>/<repo>/branches/compare/và dán băm vào danh sách thả xuống thay vì hack URL!

thả xuống, sau đó dán vào hash hash


Điều này làm việc cho tôi nhưng tôi cần chỉnh sửa url để kết thúc bằng #diff thay vì #commits, theo câu trả lời trước đó, nếu không nó không cho thấy thay đổi.
MikeA

@ brian.keng bạn có thể đánh dấu đây là câu trả lời đúng không?
Ahmed Hasn.

10

Tôi có Máy chủ Bitbucket, phiên bản: v4.4.1

Câu trả lời với tôi là đây.

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

Tôi đang tìm kiếm câu trả lời này bởi vì trong dự án của tôi, chúng tôi sử dụng các mô đun con git và trong các yêu cầu kéo tôi chỉ có thể thấy cam kết cũ sha so với cam kết mới của mỗi mô hình con đã thay đổi. Không có liên kết để nhấp hoặc bất cứ điều gì (mà tôi biết) để chuyển sang chế độ xem khác này. Url này cho phép tôi xem những gì đã thay đổi trong các mô hình con.

Btw, nếu ai đó biết về một cách tốt hơn để so sánh hai lần xác nhận trong các mô hình con trong yêu cầu kéo, xin vui lòng cho tôi biết.


13
Tất cả điều này đối với tôi, trên Bitbucket Server v4.9.0, được hiển thị cam kết đầu tiên. Nó không so sánh các sửa đổi.
Jeff

@ Jeff đã làm bạn cố gắng chuyển đổi <cũ> đến <mới> Tôi có thể trộn chúng lên, nếu như vậy, sau đó tôi sẽ sửa câu trả lời của tôi
santiago arizti

1
Vâng, cùng một vấn đề. Trên thực tế, kể từ tháng 11 năm 2016 (tháng này), Atlassian đang nói rằng tính năng này chưa được hỗ trợ trong Máy chủ Bitbucket: jira.atlassian.com/plugins/servlet/mobile#su/BSERV-2550 . Bạn có chắc chắn nó đang làm những gì bạn nghĩ nó có trên hệ thống của bạn?
Jeff

Tôi thấy điều này hoạt động cho một sudo cho các thẻ, bằng cách lấy hàm băm cam kết cho mỗi thẻ
tristanbailey

5

Định dạng xem so sánh Bitbucket như sau:

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

Cho một ví dụ ged/ruby-pg(RubyGem, một thư viện ruby):

Để so sánh hai bản phát hành (từ v0.18.1 đến v0.18.2)

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

Để so sánh hai phiên bản (từ f97dd6c đến 22a3612)

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


4

GO đến kho lưu trữ bitbucket của bạn> Chi nhánh nhập mô tả hình ảnh ở đây

Nhấp vào biểu tượng menu và so sánh



0

Tạo một thẻ ánh sáng để (các) cam kết bạn muốn so sánh. git -a [tên thẻ] [commit_sha]

Sau đó, trong Bitbucket, trong menu so sánh (yêu cầu kéo) chỉ cần so sánh với các thẻ.


0

Bạn cũng có thể thực hiện việc này bên trong yêu cầu kéo, giả sử sau khi ai đó thực hiện việc đẩy tới chi nhánh để khắc phục kết quả đánh giá. Theo hiểu biết của tôi thì chưa có UI cho việc này, nhưng bạn có thể nhập url như thế này:

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


0

Tại dấu nhắc lệnh

git log -p -1

Điều này cho thấy sự so sánh với phiên bản trước.

git log -p -5

Điều này cho thấy 5 phiên bản mới nhất, so sánh hai phiên bản kế tiếp nhau (n & n-1, n-1 & n-2, v.v.).

Tôi nhận ra, điều này không lý tưởng để thể hiện sự khác biệt trực tiếp giữa hai phiên bản cụ thể.

Tham chiếu https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History


-4

Thông qua thiết bị đầu cuối, chạy git trên đường dẫn dự án của bạn:

git diff <new commit> <old commit>

Ví dụ: git diff 26cf60f be5f978


2
Đây là cách so sánh mọi thứ với git, trên dòng lệnh; câu hỏi là làm thế nào để làm điều đó trong Bitbucket, trên trang web :)
Đánh dấu VY

bitbucket không có các tính năng này .. do đó dòng cmd là cách duy nhất ..
Siddharth

Đây là câu trả lời tôi thấy hữu ích nhất. Đồng ý câu hỏi nêu bitbucket và câu trả lời này không cung cấp giải pháp hoạt động độc đáo với bitbucket cũng như các giải pháp git khác.
ptsw
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.