Cách đặt trạng thái git chỉ hiển thị các tệp theo giai đoạn


86

Tôi chỉ muốn lấy danh sách các tên tệp theo giai đoạn. Tôi không thể tìm thấy cờ tương đương --name-onlycho git statuslệnh. Một thay thế tốt là gì?

Danh sách tệp sẽ được chuyển đến php -l(trình kiểm tra cú pháp lint PHP).

Giải pháp: lệnh hoàn chỉnh

git diff --name-only --cached | xargs -l php -l

3
Nếu bạn đang chạy lệnh đó theo cách thủ công, có vẻ như bạn có thể muốn đặt nó vào một hook pre-commit. kernel.org/pub/software/scm/git/docs/githooks.html
MatrixFrog

Câu trả lời:


129

Sử dụng git diff --name-only(với --cachedđể lấy các tệp theo giai đoạn)


12

Câu trả lời được chấp nhận sẽ không cho bạn biết đã có những loại thay đổi nào.

Có, Nếu bạn không phải là người kiểm tra cú pháp mà là một người bình thường có kho chứa đầy các tệp chưa được phân giai đoạn và bạn vẫn muốn biết điều gì sẽ xảy ra với các tệp theo giai đoạn - có một lệnh khác:

git status --short | grep '^[MARCD]'

dẫn đến một cái gì đó như:

M  dir/modified_file
A  dir/new_file
R  dir/renamed -> dir/renamed_to
C  dir/copied_file
D  dir/deleted_file

Rõ ràng, các tệp này đã được tổ chức, và sau khi git commit:
deleted_filesẽ bị xóa,
new_filesẽ được thêm vào,
renamed_filesẽ trở thành một renamed_to.

Đây là giải thích về đầu ra định dạng ngắn: https://git-scm.com/docs/git-status#_short_format


1. trong phiên bản của tôi (2.25.0.windows.1) có một khoảng trắng trước "M" và "D". 2. Ngoài ra còn có một trạng thái khác - "??" mà tôi không biết phải giải thích như thế nào.
itho

@itsho khoảng trắng chỉ ra rằng nó không được dàn dựng. Câu trả lời này đúng vì nó khớp với ký tự đầu tiên trong dòng. Nếu char đầu tiên được đặt thì đó là một tệp theo giai đoạn. Nếu đó là khoảng trắng, nó sẽ bị bỏ qua.
Avner

1
Đây là thiên tài! - nên có một cờ git cho điều tương tự
Norfeldt

3

Lấy cảm hứng từ câu trả lời của @ coffman21 , tôi đã thiết lập bí danh sau trong.zshrc

alias gst="git status"
alias gst-staged="git status --short | grep '^\w.'"
alias gst-unstaged="git status  --short | grep '^\W.'"
alias gst-unstaged-tracked="git status  --short | grep '^\s.'"
alias gst-untracked="git status --short | grep '^??'"

Nó có thể được sử dụng cho bất kỳ ai khác. Vì vậy, thêm nó vào chồng câu trả lời.


1
cho màu phù hợp bạn có thể thêm một .trong grep, tô màu cả 2 chars ban đầu, như: grep '^\w.', grep '^\W.',grep '^\s.'
geekley

cảm ơn @geekley - điều này thực sự hữu ích
Norfeldt

không cần đến cái cuối cùng, tuy nhiên; nó đã có hai ký tự??
geekley

Điều đó hiện đã được sửa chữa. Cảm ơn một lần nữa
Norfeldt

0

để xem các tệp theo giai đoạn có thay đổi mã

git diff --staged   

hoặc sử dụng --cached, từ đồng nghĩa với --staged

git diff --cached

hoặc chỉ xem tên tệp mà không thay đổi mã

git diff --staged --name-only  

hướng dẫn sử dụng git-diff

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.