2013-09-28 131 views
9

git commit mở soạn thảo văn bản và hiển thị một số thông tin về những thay đổi được cam kết:git: Hiển thị thông điệp cuối cùng cam kết trong cam kết mẫu

# Please enter the commit message for your changes. Lines starting 
# with '#' will be ignored, and an empty message aborts the commit. 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 

# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 

tôi muốn mở rộng mẫu này để hiển thị

  • dòng đầu tiên của N thư cam kết cuối cùng và/hoặc
  • thông báo đầy đủ của lần commit cuối cùng

của nhánh hiện tại. Làm thế nào tôi có thể làm điều đó?

Trả lời

10

Điều này sẽ sử dụng git hooks.

  • Trong thư mục gốc của dự án của bạn điều hướng đến .git/hooks/
  • Bây giờ tạo ra các tập tin prepare-commit-msg
  • Thêm các bit mã sau đây:
#!/bin/sh 
ORIG_MSG_FILE="$1" # Grab the current template 
TEMP=`mktemp /tmp/git-msg-XXXXX` # Create a temp file 
trap "rm -f $TEMP" exit # Remove temp file on exit 

MSG=`git log -1 --pretty=%s` # Grab the first line of the last commit message 

(printf "\n\n# Last Commit: %s \n\n" "$MSG"; cat "$ORIG_MSG_FILE") > "$TEMP" # print all to temp file 
cat "$TEMP" > "$ORIG_MSG_FILE" # Move temp file to commit message 
  • chmod +x prepare-commit_message

Idea mượn từ Enhancing git commit messages

Bạn có thể lấy toàn bộ cam kết thông báo bằng cách sử dụng %b%B, nhưng có thể chạy vào các vấn đề với nhiều dòng cam kết. Có thể được ưa thích với %-b%-B hoặc chỉ đọc thêm trong Documentation (cuộn đến định dạng)

+0

Nhớ xóa tệp tạm thời và thêm '\ n' vào cuối' printf' (nó không bao gồm một dòng mới như 'echo' nào. –

+0

@BrianCampbell Đã thêm dòng mới sau thông báo. Hy vọng rằng bạn cũng có thể xóa sạch. – Brombomb

+1

' trap "rm -f $ TEMP" exit' nên làm điều đó (thường đặt sau dòng tạo tệp tạm thời sao cho nếu các dòng sau thoát ra nó sẽ vẫn chạy) –