Sau khi đọc một số câu hỏi về .gitignore
tôi đã tìm thấy không ai có thể trả lời câu hỏi của tôi:bỏ qua tập tin nhất định trong tất cả các thư mục sử dụng một tập tin duy nhất .gitignore
Tôi phải làm gì để thêm vào .gitignore để bỏ qua tất cả các file với một kết thúc nhất định, giả sử *.txt
trong tất cả các thư mục.
Tôi muốn chỉ có một tệp .gitignore
ở cấp cao nhất.
Tôi đã thử nhiều thứ nhưng không có tác dụng nào.
Đây là những gì tôi thử nghiệm (.gitignore
được bổ sung vào kho lưu trữ trước đó, không có tập tin khác đã được bổ sung):
$ ls
abc.txt content
$ ls content/
abc.txt def.other def.txt
$ echo "" > .gitignore
$ git status --ignored --untracked-files=all
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: .gitignore
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# abc.txt
# content/abc.txt
# content/def.other
# content/def.txt
no changes added to commit (use "git add" and/or "git commit -a")
này được như mong đợi: tất cả các file xuất hiện kể từ khi .gitignore trống.
$ echo "*.txt" > .gitignore
$ git status --ignored --untracked-files=all
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: .gitignore
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# content/def.other
# Ignored files:
# (use "git add -f <file>..." to include in what will be committed)
#
# abc.txt
no changes added to commit (use "git add" and/or "git commit -a")
Tại sao nội dung/abc.txt và nội dung/def.txt hiển thị trong danh sách?
$ git clean -n
Would not remove content/
Tôi nghĩ chúng cũng sẽ hiển thị ở đây.
$ echo "" > .gitignore
$ git clean -n
Would remove abc.txt
Would not remove content/
$ cd content
$ git clean -n -x
Would remove def.other
$ git clean -n -x
Would remove abc.txt
Would remove def.other
Would remove def.txt
Nếu các tập tin nội dung/abc.txt và content/def.txt được trình bày bởi clean -n -x
nhưng không phải bởi clean -n
, tôi nghĩ rằng họ đang bị bỏ qua. Nhưng tại sao chúng không hiển thị trong git status --ignored --untracked-files=all
?
Dường như lý do vì 'tình trạng git --ignored --untracked-file = all' không hiển thị các tập tin trong thử nghiệm của bạn có cái gì để làm với các "thư mục không được theo dõi" (bạn thực sự có thể 't theo dõi các thư mục, chỉ các tập tin, nhưng khi tôi theo dõi một tập tin bên trong thư mục mà chúng xuất hiện) – KurzedMetal
Điều đó có hiệu quả. Mặc dù 'git clean -fx' chỉ xóa các tệp trong nội dung sau khi thư mục chứa tệp được theo dõi. Nếu không, tôi đã phải gọi lệnh trong thư mục chính nó để loại bỏ các tập tin! – Onur