Có cách nào để sửa đổi một cam kết mà không vi
(hoặc của bạn $EDITOR
) xuất hiện với tùy chọn sửa đổi thông điệp cam kết của bạn, nhưng chỉ cần sử dụng lại tin nhắn trước đó?
Có cách nào để sửa đổi một cam kết mà không vi
(hoặc của bạn $EDITOR
) xuất hiện với tùy chọn sửa đổi thông điệp cam kết của bạn, nhưng chỉ cần sử dụng lại tin nhắn trước đó?
Câu trả lời:
Vì phiên bản git 1.7.9, bạn cũng có thể sử dụng git commit --amend --no-edit
để nhận kết quả của mình.
Lưu ý rằng điều này sẽ không bao gồm siêu dữ liệu từ các cam kết khác, chẳng hạn như dấu thời gian có thể hoặc không quan trọng đối với bạn.
git commit -C HEAD --amend
sẽ làm những gì bạn muốn. Các -C
tùy chọn có siêu dữ liệu từ một cam kết.
git config --global alias.amend 'commit --amend -C HEAD'
. Sau đó bạn có thể sử dụng git amend
như một phím tắt.
--amend
, thậm chí không có tùy chọn nào khác, sẽ giữ nguyên ngày của tác giả (nhưng thay đổi ngày cam kết). Như vậy, tôi đã loại bỏ bình luận cũ của tôi.
—amend
. Bạn có thể tạo một cam kết mới nhưng sử dụng cùng một thông điệp như cam kết trước đó. Điều đó nghe có vẻ không hữu ích nhưng thông điệp cam kết của tôi theo mặc định khi tôi chỉ lưu công việc của mình mà không phải nghĩ ra một tin nhắn cam kết tốt đẹp, tôi tiếp tục sử dụng lại tin nhắn—message=“Work in progress (untested)”
Một khả năng (ngớ ngẩn) khác là git commit --amend <<< :wq
nếu bạn có vi (m) là $EDITOR
.
... <<< ZZ
thậm chí có thể ít gõ hơn;)
... <<< :x
:)
Sử dụng câu trả lời được chấp nhận để tạo bí danh
oops = "!f(){ \
git add -A; \
if [ \"$1\" == '' ]; then \
git commit --amend --no-edit; \
else \
git commit --amend \"$@\"; \
fi;\
}; f"
sau đó bạn có thể làm
git oops
và nó sẽ thêm mọi thứ và sửa đổi bằng cùng một thông điệp
hoặc là
git oops -m "new message"
sửa đổi thay thế tin nhắn