Git: 1. Liệt kê tất cả các tệp trong một nhánh, 2. so sánh các tệp từ các nhánh khác nhau


88
  1. Tìm kiếm một lệnh giống như ls -Rhoặc dir/scó thể liệt kê tất cả các tệp trong một cam kết / nhánh.
  2. Có lệnh nào có thể so sánh hai tệp từ các nhánh khác nhau không?

Câu trả lời:


136
  1. git ls-tree -r --name-only <commit>(ở đâu thay vì <commit>có thể có <branch>).
    Bạn cũng có thể muốn sử dụng -ttùy chọn liệt kê các thư mục con trước khi giảm dần vào chúng
  2. git diff <branchA>:<fileA> <branchB>:<fileB>,
    Hoặc nếu bạn muốn so sánh cùng một tập tingit diff <branchA> <branchB> -- <file>

4
Nếu bạn muốn liệt kê một thư mục cụ thể mà bạn có thể thêm một dấu hai chấm theo sau là đường dẫn đến chi nhánh ví dụ: git ls-cây -r --name chỉ thạc sĩ: thư mục / path / tên
miller gorilla

25

Để so sánh cùng một tệp từ các nhánh khác nhau:

git diff branch_1..branch_2 file.txt

Để liệt kê tất cả các tệp trong một đối tượng cây:

git ls-tree -r branch

Tôi nhận được "git: 'ls' không phải là lệnh git. Hãy xem 'git --help'." và tôi đang sử dụng git v 2.19.0.
Andrew S

1
Nó không chỉ là ls, bạn đã quên -treeở cuối dòng :)
Dan Loewenherz

Ah tôi giả định là ls-ba. Tôi nghĩ - ba là một công tắc. Cảm ơn.
Andrew S

24

Để liệt kê tất cả các tệp được thêm vào nhánh mới

git diff --name-only branch1 master

4
Điều này chỉ liệt kê tên của tất cả các tệp đã thay đổi, không chỉ các tệp mới.
Meredith

2

Kể từ Git v2.1.0 [15/08/14]

Để liệt kê, bạn có thể sử dụng git ls-filesđể liệt kê tất cả các tệp một cách đệ quy trong thư mục chỉ mục / làm việc hiện tại. Bạn có thể tham khảo Git-SCM Docs / git-ls-files hoặc nhập man git-ls-filesnếu bạn đã cài đặt Git và có sẵn trang nam.

Nó có tùy chọn tốt đẹp để hiển thị tập tin theo nhiều cách khác nhau như cached, staged, deleted, modified, ignoredhoặc otherscho được theo dõi. Nó cũng hỗ trợ các mẫu phù hợp. Có còn là một --debugarg, bạn có thể dễ dàng liệt kê creation time, modification time, inode id, owner & group id, sizeflagscho các tập tin.


Đối với sự khác biệt của hai nhánh, chỉ cần sử dụng git diff <branch> <other branch>như đã nêu trong các câu trả lời khác.


2

Liệt kê các tệp trong nhánh với git ls-files

  1. Hãy thử git ls-filesmô tả trong tài liệu git-scm :
# Switch to <branch> of interest
$ git checkout <branch>
# List all files in <branch>
$ git ls-files

Để biết thêm các tùy chọn, hãy kiểm tra tài liệu .

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.