Tôi có thể nhận danh sách các tệp được đánh dấu - không thay đổi không?


325

Tôi đã đánh dấu là gì --assume-unchanged gì? Có cách nào để tìm hiểu những gì tôi đã sử dụng tùy chọn đó không?

Tôi đã đào qua .git/thư mục và không thấy bất cứ thứ gì trông giống như những gì tôi mong đợi, nhưng nó phải ở đâu đó. Tôi đã quên những gì tôi đã đánh dấu theo cách này một vài tuần trước và bây giờ tôi cần ghi lại những chi tiết đó cho các nhà phát triển trong tương lai.

Câu trả lời:


449

Bạn có thể dùng git ls-files -v . Nếu ký tự được in là chữ thường, tệp được đánh dấu không thay đổi.

Để chỉ in các tệp không thay đổi, hãy sử dụng:

git ls-files -v | grep '^[[:lower:]]'

Để nắm lấy lập trình viên lười biếng của bạn, hãy biến điều này thành bí danh git . Chỉnh sửa .gitconfigtệp của bạn để thêm đoạn mã này:

[alias]
    ignored = !git ls-files -v | grep "^[[:lower:]]"

Bây giờ gõ git ignoredsẽ cung cấp cho bạn đầu ra như thế này:

h path/to/ignored.file
h another/ignored.file

42
git ls-files -v | grep ^ [az]
Matt R

17
Hệ điều hành của tôi rõ ràng có một thiết lập đối chiếu kỳ lạ, vì vậy lệnh của Matt không hoạt động với tôi. Đây là những gì tôi đã thêm vào [alias]phần của tôi .gitconfig:ignored = !git ls-files -v | grep "^[[:lower:]]"
Abe Voelker

15
Lý do [az] không hoạt động là vì cái vỏ mở rộng nó như một ký tự đại diện; nếu thư mục hiện tại chứa một tệp khớp với mẫu đó (nghĩa là một chữ cái viết thường), thì phần mở rộng của đó là tên của tệp. Hãy thử thêm dấu ngoặc kép, ví dụ: "[az]"
DomQ

7
git ls-files -v | grep -e "^ [az]"
Amir Ali Akbari

12
Các bí danh được đề xuất làm việc để tìm các tệp không thay đổi trong thư mục hiện tại và bên dưới. Nếu bạn muốn có một danh sách tất cả các tệp "không thay đổi" trong kho lưu trữ, bạn sẽ cầngit ls-files -v `git rev-parse --show-toplevel` | grep "^[a-z]"
Trebor Rude

65

Lót

git ls-files -v | grep "^[a-z]"

Sử dụng bí danh

IMHO, git hiddentốt hơn cho các tệp được đánh dấu là --assume-unchanged:

git config --global alias.hidden '!git ls-files -v | grep "^[a-z]"'

Đây là danh sách các bí danh liên quan mà tôi có ~/.gitconfig:

[alias]
  hide = update-index --assume-unchanged
  unhide = update-index --no-assume-unchanged
  unhide-all = update-index --really-refresh
  hidden = !git ls-files -v | grep \"^[a-z]\"
  ignored = !git status -s --ignored | grep \"^!!\"

Để làm cho nó hoạt động trong các thư mục con và các đối số hỗ trợ :

  hidden = "!f(){ git -C \"$GIT_PREFIX\" ls-files -v \"$@\" | grep \"^[a-z]\";}; f"
  ignored = "!f(){ git -C \"$GIT_PREFIX\" status -s --ignored \"$@\" | grep \"^!!\";}; f"

Ví dụ:

 # cd target
 # git ignored classes

Giới thiệu về Trạng thái tệp

Đối với tôi, hầu hết các tệp ẩn được đánh dấu bằng cờ h, mặc dù thực tế có một số cờ khác theo hướng dẫn của git-ls-files-v:

-v
    Similar to -t, but use lowercase letters for files that are 
marked as assume unchanged (see git-update-index(1)).

Về git ls-files-t:

This option (-t) identifies the file status with the following tags 
(followed by a space) at the start of each line:

H   cached
S   skip-worktree
M   unmerged
R   removed/deleted
C   modified/changed
K   to be killed
?   other

1
Các bí danh dễ nhớ dễ nhớ :) Cảm ơn
Bệnh dịch hạch

1
Dưới đây là một số biến thể linh hoạt hơn: hidden = "!f() { git ls-files -v \"$@\" | grep \"^[a-z]\"; }; f"ignored = "!f() { git status -s --ignored \"$@\" | grep \"^!!\"; }; f". Điều này cho phép, ví dụ, git ignored -- PATH1 PATH2chỉ liệt kê các tệp bị bỏ qua trong các đường dẫn nhất định (hữu ích khi bạn có nhiều tệp bị bỏ qua).
sls

Cảm ơn bạn vì bí danh
MOHRE

22

Lệnh này hoạt động ổn định hơn đối với tôi. Nó sẽ chỉ in các tệp được liệt kê là 'không giả định'.

git ls-files -v|grep "^h"

Tôi đã sử dụng rất nhiều lần trong các môi trường khác nhau và nó hoạt động hoàn hảo.


5
Trong lời nhắc của Windows, hãy sử dụng grep "^h"thay cho dấu ngoặc đơn
beautifulcoder

7

Giải pháp PowerShell, sử dụng Chọn-Chuỗi \ sls

git ls-files -v | sls -pattern ^h -casesensitive

3

Giải pháp dòng lệnh Windows bằng findstr :

git ls-files -v | findstr /B h
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.