Câu hỏi của OP đã hơn 9 tuổi. Tôi không biết những gì đã man git-status
nói sau đó, nhưng đây là những gì nó nói bây giờ:
--porcelain[=<version>]
Give the output in an easy-to-parse format for scripts. This is similar to the
short output, but will remain stable across Git versions and regardless of user
configuration. See below for details.
The version parameter is used to specify the format version. This is optional and
defaults to the original version v1 format.
Điều này cho thấy rằng --porcelain
đối số rất phù hợp để kiểm tra trạng thái của một repo để thay đổi.
Viết câu hỏi của OP, "Có một loại kiểm tra boolean nào nếu có thay đổi kể từ lần cam kết cuối cùng không, hoặc làm thế nào tôi có thể thực sự kiểm tra nếu có thay đổi mới đối với kho lưu trữ cục bộ của mình?"
Tôi không nghĩ rằng bash
có các kiểu dữ liệu boolean mỗi se , nhưng điều này có thể đủ gần:
[ -z "`git status --porcelain`" ] && echo "NULL-NO DIFFS" || echo "DIFFS EXIST"
Điều này có thể được tạo lại if-then-else
dưới dạng biểu mẫu cho tập lệnh hoặc được thực thi dưới dạng fm là CLI khi ở trong thư mục git repo . Mặt khác, sử dụng -C
tùy chọn với thông số đường dẫn đến repo quan tâm:
git -C ~/path/to/MyGitRepo status --porcelain
Phụ lục:
- Một số lời khuyên sử dụng
-u, --untracked-file
tùy chọn để tránh báo cáo trạng thái trên các tệp mà một người muốn bỏ qua. Lưu ý điều này đi kèm với một tác dụng phụ đáng tiếc : các tệp mới được thêm vào cũng không được đặt trạng thái. Tùy chọn này hữu ích trong một số tình huống , nhưng hãy xem xét cẩn thận trước khi sử dụng.
git status
vậy?