Để áp dụng các thông số bổ sung cho bất kỳ điều gì ngoại trừ phần cuối của dòng lệnh "bí danh" của bạn, bạn sẽ cần phải đặt các lệnh shell của mình trong tập lệnh. Bạn có thể làm điều đó với một kịch bản bên ngoài (như jdelStrother’s answer), hoặc bạn có thể làm điều đó với một kịch bản shell "nội tuyến".
Bạn có thể sử dụng để nuôi -m
git commit
nhắn mới của bạn hoặc sử dụng tùy chọn -C HEAD
/--reuse-message=HEAD
để có nó sử dụng thông điệp hiện có và là tác giả (nó cũng sẽ tái sử dụng các dấu thời gian tác giả, nhưng bạn đang đặt lại rằng với --date=…
). Sử dụng bất kỳ tùy chọn nào trong số các tùy chọn này sẽ ngăn Git mở trình chỉnh sửa cho thông báo cam kết của bạn.
Ở đây nó là như một “inline” shell script:
git config --global alias.sync '!sh -c '\''git commit --amend --date=today ${1+-m} "${1---reuse-message=HEAD}" && git rebase master'\'' -'
Cốt lõi của kịch bản nhỏ này là cặp mở rộng tham số điều kiện:
${1+-m} "${1---reuse-message=HEAD}"
Khi bạn gọi nó với một phụ tham số (tức là thông điệp nhật ký thay thế của bạn), các thông số này mở rộng thành hai từ vỏ: -m "<your new log message>"
. Khi bạn không cung cấp thông số bổ sung, chúng sẽ mở rộng thành một từ duy nhất: "--reuse-message=HEAD"
.
Dấu gạch ngang sau cũng rất quan trọng; nó có thể là bất kỳ từ shell nào, điểm là cái gì đó phải ở đó vì shell sẽ sử dụng nó để khởi tạo tham số $0
(thường có giá trị mặc định, vì vậy nó vô ích đối với bản mở rộng có điều kiện).
Nếu tôi hiểu lầm và bạn thực sự muốn nhìn thấy các biên tập viên khi bạn không cung cấp các tham số phụ, sau đó sử dụng mở rộng đơn ${1+-m "$1"}
thay cho cặp mở rộng.
Nguồn
2011-07-09 04:41:56
Bản sao có thể có của http://stackoverflow.com/q/3321492/923794 – cfi