Git - Liệt kê tất cả các tệp hiện đang được kiểm soát nguồn?


122

Có cách nào để liệt kê tất cả các tệp hiện đang được kiểm soát nguồn trong git không? (Không chỉ những người đã được sửa đổi).

Câu trả lời:


129

Nếu bạn muốn liệt kê tất cả các tệp cho một nhánh cụ thể, ví dụ master:

git ls-cây -r chủ - chỉ tên

Các -rtùy chọn sẽ cho phép nó recurse vào thư mục con và in mỗi tập tin hiện dưới sự kiểm soát phiên bản. Bạn cũng có thể chỉ định HEADthay vì masternhận danh sách cho bất kỳ chi nhánh nào khác mà bạn có thể tham gia.

Nếu bạn muốn có một danh sách tất cả các tệp đã tồn tại, xem tại đây :

git log --pretty = format: --name-only --diff-filter = A | sắp xếp

1
Cảm ơn slhck, chính xác những gì tôi đã theo sau - và cũng hữu ích để biết về cái thứ hai nữa. Sẽ đánh dấu là chính xác trong 5 phút rưỡi khi tôi được phép. :-)
Ẩn danh

3
Cảm ơn câu trả lời. Tôi vẫn đang tìm kiếm điều này. Lưu ý rằng git ls-tree -r master --name-onlysẽ làm tương tự như tùy chọn đầu tiên, mà không cần cut. Ah, và bạn có thể chỉ định HEADthay vì masternếu bạn chỉ muốn danh sách này cho bất kỳ chi nhánh nào bạn hiện đang ở.
maurits

6
Chạy "git ls-files" sẽ giúp bạn tiết kiệm một vài ký tự :)
Zain R

Tại sao bị cắt đưa ra kết thúc -? Nó khiến một số dòng bổ sung hiển thị một số tệp trong cột thứ hai được lặp lại từ cột đầu tiên.
Adrian

@Adrian Không có ý tưởng, sao chép lại sau đó, sửa bây giờ.
slhck

61

Các git ls-fileslệnh sẽ làm những gì bạn cần.

Nguồn: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html


4
git ls-filesthay vì git ls-tree -r master --name-onlychắc chắn là đơn giản hơn.
karatedog

1
Xin lỗi nhưng chỉnh sửa của tôi không hợp lệ. Trong git hiện tại không có git-ls-filesnhị phân. Có gitnhị phân với ls-fileslệnh. Liên kết đến tài liệu là chính xác trong nội dung, nhưng về mặt kỹ thuật cho một nhị phân lỗi thời.
JonnyJD

@JonnyJD, có thể được đánh dấu không hợp lệ vì chỉnh sửa của bạn phải là một nhận xét.
Ascherer

1
@JonnyJD Tất cả Git nhân trang được đặt tên như git-commit, git-init, git-ls-filesvv mặc dù các chương trình đang thực sự lệnh con. Không bao giờ có một git-ls-filesnhị phân, rất có thể. Lý do là nó phù hợp với cơ chế tiểu ban bên ngoài, cho phép bạn đăng ký một git foolệnh bằng cách viết git-foonhị phân.
Radon Rosborough

4

git ls-files sẽ chỉ in các tập tin trong thư mục làm việc hiện tại.

Ví dụ, nếu bạn có một git repo cho dotfiles ( core.worktree = /), thì bạn sẽ có các tệp bên ngoài gốc git và lệnh đơn giản đó sẽ không hoạt động nữa.

Nói tóm lại, điều này sẽ hoạt động:

git --git-dir "`git rev-parse --git-dir`" \
    -C "`git config core.worktree || pwd`" \
    ls-files

Thí dụ:

mkdir ~/dotfiles
cd ~/dotfiles
git config core.worktree /

# Ignore all files by default, else Git will find all files under "/"
echo "*" > .git/info/exclude

# Add files at the git repo's root and somewhere in the work tree
touch README
git add -f README
git add -f /etc/ssh/sshd_config

# `git status` would now print:
# new file:   ../../../etc/ssh/sshd_config
# new file:   README
git status

git commit -m "Initial commit"

# At this point, `git ls-files` prints only:
# README
git ls-files

# But you can print all files inside the work tree. This will print:
# etc/ssh/sshd_config
# home/yourusername/dotfiles/README
git --git-dir "`git rev-parse --git-dir`" -C "`git config core.worktree || pwd`" ls-files

Nếu bạn muốn các đường dẫn được chỉ định liên quan đến thư mục (shell) hiện tại của bạn, thì đây là công việc:

alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'

và trong ví dụ trên, nó sẽ in

README
../../../etc/ssh/sshd_config

Trong git v2.21, git ls-fileshiển thị tất cả trong thư mục hiện tại và bên dưới. Nó chỉ không hiển thị các tập tin đã bị xóa trong repo.
Adrian

0

Bạn cũng có thể sử dụng gitktrình xem kho lưu trữ tương tác.


1
Điều này đề cập đến một công cụ, nhưng không thực sự trả lời "làm thế nào". Bạn có thể mở rộng điều này thành một giải pháp hành động? Chỉ cần chỉ cho ai đó theo hướng nghiên cứu để họ phát triển giải pháp của riêng họ là thích hợp hơn như một nhận xét. Cảm ơn. từ đánh giá
fixer1234

-2

Ảnh chụp màn hình

Xin vui lòng xem hình ảnh, ở bên phải có hai tùy chọn vá và Cây. Nếu bạn chọn cây, bạn có thể xem cấu trúc thư mục cho mỗi lần xác nhận.


Vui lòng xem xét một cam kết tốt hơn để chụp màn hình để bạn không phải kiểm duyệt nhiều.
Thorbjørn Ravn Andersen
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.