Lệnh Git để hiển thị id cam kết?


250

Tôi có thể sử dụng lệnh nào để in ra id cam kết của HEAD?

Đây là những gì tôi đang làm bằng tay:

$ cat .git/HEAD
ref: refs/heads/v3.3
$ cat .git/refs/heads/v3.3
6050732e725c68b83c35c873ff8808dff1c406e1

Nhưng tôi cần một tập lệnh có thể chuyển một cách đáng tin cậy đầu ra của một số lệnh sang tệp văn bản sao cho tệp văn bản chứa chính xác id xác thực của HEAD (không có gì nhiều hơn hoặc ít hơn, không chỉ là một ref). Có ai giúp được không?


Tôi có một câu hỏi tương tự trước đây. Và nó đã được trả lời tốt ở đây: stackoverflow.com/questions/44994626/ từ
smwikipedia

Câu trả lời:


450

Sử dụng lệnh:

git rev-parse HEAD

Đối với phiên bản ngắn:

git rev-parse --short HEAD

34
Đối với bất cứ ai tìm kiếm phiên bản ngắn của hàm băm, git rev-parse --short HEADsẽ hoạt động.
mgarciaisaia


15

Chủ đề cũ, vẫn để tham khảo trong tương lai ... :) ngay cả sau khi làm việc

git show-ref --head

theo mặc định CHÍNH được lọc ra. Hãy cẩn thận về việc làm theo mặc dù; "đầu" số nhiều với một 's' ở cuối. Lệnh sau cho thấy các nhánh dưới "refs / Heads"

 git show-ref --heads

4
sử dụng các lệnh này trong một repo git (lớn), tôi nhận được hai dòng từ git show-ref --headsvà 6290 dòng từ git show-ref --head. Vì vậy, nếu bạn chỉ muốn một hàm băm duy nhất, điều này có thể không mang lại kết quả như mong muốn.
Remigius Stalder

7

Bạn có thể chỉ định git logcác tùy chọn để chỉ hiển thị cam kết cuối cùng -1và định dạng chỉ bao gồm ID cam kết, như sau:

git log -1 --format=%H

Nếu bạn thích ID cam kết rút ngắn:

git log -1 --format=%h



1

Theo https://git-scm.com/docs/git-log , để có đầu ra đẹp hơn trong bảng điều khiển, bạn có thể sử dụng đối số --decISE của lệnh git-log :

git log --pretty=oneline --decorate

sẽ in:

2a5ccd714972552064746e0fb9a7aed747e483c7 (HEAD -> master) New commit
fe00287269b07e2e44f25095748b86c5fc50a3ef (tag: v1.1-01) Commit 3
08ed8cceb27f4f5e5a168831d20a9d2fa5c91d8b (tag: v1.1, tag: v1.0-0.1) commit 1
116340f24354497af488fd63f4f5ad6286e176fc (tag: v1.0) second
52c1cdcb1988d638ec9e05a291e137912b56b3af test

0

git rev-parse --abbrev-ref HEAD


1
Điều này không hiển thị ID cam kết, mà là bất kỳ tên nào (như các nhánh hoặc thẻ) được liên kết với cam kết. Đây không phải là những gì người dùng ban đầu muốn.
Asfand Qazi

0

Bạn có thể sử dụng lệnh này

$ git rev-list HEAD

Bạn cũng có thể sử dụng headlệnh Unix để hiển thị các xác nhận mới nhất n HEADnhư

$ git rev-list HEAD | head - 2


0

Bạn có thể dùng

git log -g branchname

để xem git reflogthông tin được định dạng như git logđầu ra

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.