Tìm một cam kết trên GitHub khi băm xác nhận


286

Tôi còn khá mới với Github và đã gặp phải một vấn đề nghiệp dư.

Tôi đã được yêu cầu thực hiện đánh giá mã và đã được cung cấp hàm băm cam kết, tuy nhiên tôi đã thử tìm kiếm trong Git nếu tôi có thể tìm kiếm bằng cách sử dụng băm xác nhận nhưng không thể tìm thấy gì.

Có cách nào tôi có thể tìm thấy mã đã thay đổi chỉ bằng cách sử dụng hàm băm cam kết không?


46
Tôi thấy hoàn toàn kỳ quái khi github không nhận ra băm trong các tìm kiếm và hiển thị cho bạn cam kết nếu có một khớp với hàm băm đó.
Craig Ringer

Trên thực tế @CraigRinger, tìm kiếm github sẽ khớp với băm nếu chúng xảy ra trong yêu cầu kéo . Thật vậy, bạn có thể tìm kiếm toàn bộ github cho tiền tố băm bảy ký tự nếu bạn muốn. Nhưng nó phải là một yêu cầu kéo, không chỉ là bất kỳ cam kết nào.
Todd Owen

4
@ToddOwen Cái nào cũng hay, nhưng không phải là vấn đề. Nó phải phù hợp với băm cam kết trong một repo khi bạn tìm kiếm trong repo đó, nó thực sự kỳ quặc mà nó không.
Craig Ringer

2
@CraigRinger Nó hiện tại, cuối cùng! Xem câu trả lời mới của tôi .
Todd Owen

Câu trả lời:


378

Một URL của biểu mẫu https://github.com/<owner>/<project>/commit/<hash>sẽ cho bạn thấy những thay đổi được giới thiệu trong cam kết đó. Ví dụ: đây là một lỗi gần đây tôi đã thực hiện cho một trong các dự án của mình trên GitHub:

https://github.com/jerith666/git-graph/commit353e32b6a00dec02ae7d7c45c6b7106779a124685

Bạn cũng có thể rút ngắn hàm băm thành bất kỳ tiền tố duy nhất nào, như vậy:

https://github.com/jerith666/git-graph/commit353e32b


Tôi biết bạn vừa hỏi về GitHub, nhưng về tính đầy đủ: Nếu bạn đã kiểm tra kho lưu trữ, từ dòng lệnh, bạn có thể đạt được điều tương tự với một trong hai lệnh này (tiền tố duy nhất cũng hoạt động ở đây):

git show 35e32b6a00dec02ae7d7c45c6b7106779a124685
git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685

Lưu ý: Nếu bạn rút ngắn băm cam kết quá xa, dòng lệnh sẽ cung cấp cho bạn một thông báo định hướng hữu ích, nhưng GitHub sẽ chỉ trả về 404.


tôi đã gặp phải điều này khi cố gắng theo dõi một xác nhận trong mongo và thấy rằng có một mẫu URL tương tự để xem một tệp cụ thể, được đưa ra hàm băm của một cam kết: github.com/$owner/$project/blob/$hash/path /to/file.ext - vd: github.com/mongodb/mongo/blob/iêu
RubyTuesdayDONO

Trong này : git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685, điều -1này là cần thiết bởi vì nếu không nó sẽ hiển thị tất cả các cam kết cũ; thật tốt khi biết rằng bạn có thể sử dụng bốn số băm ban đầu (mức tối thiểu trong các thử nghiệm của tôi), vì không có tự động hoàn thành cho hàm băm; và bạn không thể chỉ định chi nhánh như thế này : git log master -p -1 35e3. Phiên bản Git: 1.7.9.5.
Rafael Barros

Một điều nữa, nhưng một điều rất quan trọng: một lần nữa, bạn không thể chỉ định một nhánh, nhưng nó sẽ tự động tìm kiếm các nhánh cục bộ và từ xa khi bạn đưa ra một hàm băm. Vì vậy, có, bạn có thể tìm kiếm một khác biệt từ xa cụ thể trước khi hợp nhất với repo cục bộ bằng dòng lệnh.
Rafael Barros

1
Trong trường hợp bất kỳ ai thắc mắc (tôi là vậy!), Điều này cũng hoạt động với 8 hàm băm đầu tiên trên cả github: github.com/jerith666/git-graph/commit353e32b6a và trên dòng lệnh:git log -p -1 35e32b6a
SimplGy

7
Thật là ngu ngốc khi UI không làm điều này dễ dàng hơn nó ... Tôi hy vọng yêu cầu tính năng sẽ làm cho nó.
ocroquette

49

Xem cam kết duy nhất:
https://github.com/<user>/<project>/commit/<hash>

Xem nhật kí:
https://github.com/<user>/<project>/commits/<hash>

Xem repo đầy đủ:
https://github.com/<user>/<project>/tree/<hash>

<hash> có thể là bất kỳ chiều dài miễn là nó là duy nhất.


1
nếu độ dài ít nhất là 7 ký tự thì không sao
Kasun Siyambalapitiya

3
Không có độ dài tối thiểu cho hàm băm cam kết là 4 ký tự (một lần nữa, miễn là nó là duy nhất trong toàn bộ kho lưu trữ)
qwertzguy

21

Khả năng tìm kiếm cam kết gần đây đã được thêm vào GitHub.

Để tìm kiếm một hàm băm, chỉ cần nhập ít nhất 7 ký tự đầu tiên vào hộp tìm kiếm. Sau đó, trên trang kết quả, nhấp vào tab "Cam kết" để xem các cam kết phù hợp (nhưng thường chỉ trên nhánh mặc định master) hoặc tab "Sự cố" để xem các yêu cầu kéo có chứa cam kết.

Để rõ ràng hơn, bạn có thể thêm hash:tiền tố vào tìm kiếm, nhưng nó không thực sự cần thiết.

Ngoài ra còn có API REST (tại thời điểm viết nó vẫn đang ở chế độ xem trước).


2
Tôi ngạc nhiên rằng nó thực sự hoạt động theo cách này. Nó không trực quan. Theo mặc định, Github sẽ hiển thị tab "Mã", rõ ràng không có kết quả nào trong đó. Không nên hiển thị tab duy nhất với bất kỳ kết quả nào trong đó theo mặc định?
mùa hè

Vì vậy, để được rõ ràng, nếu bạn có doanh nghiệp của riêng bạn cài đặt của github, bạn có thể tìm thấy bất kỳ cam kết trong bất kỳ repo bằng cách tìm kiếm nó như vậy: https://YourGithubDomain/search?q=YOUR_COMMIT_HASH&type=Commits Lưu ý rằng tôi đã cố gắng này trên Github là tốt, và nó làm việc có quá ví dụ https://github.com/search?q=38db172d13962ea177c00c9a3b4b3169b317e94b&type=Commits
Brad Parks
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.