Liệt kê tất cả các tệp đã từng tồn tại trong kho lưu trữ Git


108

Bạn có cách nào rõ ràng để liệt kê tất cả các tệp đã từng tồn tại trong nhánh cụ thể không?

Câu trả lời:


135

Đây là một biến thể đơn giản hóa của giải pháp Strager :

git log --pretty=format: --name-status | cut -f2- | sort -u

Chỉnh sửa: Cảm ơn Jakub đã dạy tôi thêm một chút trong phần nhận xét, phiên bản này có đường dẫn ngắn hơn và mang lại cho git nhiều cơ hội hơn để làm đúng.

git log --pretty=format: --name-only --diff-filter=A | sort -u

8
@Dustlin: Thêm --diff-filter = Một tùy chọn (chỉ liệt kê các tệp được thêm vào). Phiên bản hiện tại (không lọc sed chỉ các tệp được thêm vào) sẽ không thành công nếu bạn đã bật tính năng phát hiện đổi tên và đã đổi tên trong lịch sử. Tôi nghĩ sau đó bạn có thể sử dụng --name-only thay vì --name-status và xóa 'cut -f2-' khỏi đường dẫn.
Jakub Narębski

Trong một trong những repo của tôi, tôi nhận được khá nhiều dòng trùng lặp (bao gồm một số dòng trống ở đầu đầu ra) với lệnh thứ hai không trùng lặp với lệnh đầu tiên.
Slipp D. Thompson

Nếu bạn cần thêm một chút thông tin ngoài tên tệp: $ git log --pretty = format: "% h% an [% cd]:% s" --name-only | cắt -f2- | sắp xếp -u | grep Filename.ext
Nitay

3
Lưu ý: --alllà thứ bạn sẽ cần nếu bạn có nhiều hơn một mẹo nhỏ. Ví dụ: nhiều lịch sử riêng biệt trong một kho.
ThorSummoner

2
--diff-filter=Abỏ qua các tệp được tạo bằng cách sao chép một tệp đã có sẵn, vì vậy việc thêm tệp có thể không phải lúc nào cũng như ý bạn muốn.
cmbuckley,

13

Điều này thực hiện đúng để kiểm tra xem tên tệp đã từng có trong repo không chỉ trên nhánh hiện tại.

git log --all --pretty=format: --name-only --diff-filter=A | sort - | grep fubar

3

Bạn có thể chạy git-log --name-status, điều này giống như:

commit afdbbaf52ab24ef7ce1daaf75f3aaf18c4d2fee0
Author: Your Name <your@email.com>
Date:   Tue Aug 12 13:28:34 2008 -0700

    Added test file.

A       test

Sau đó giải nén các tệp được thêm vào:

git-log --name-status | sed -ne 's/^A[^u]//p' | sort -u

2

Đây là hai bí danh hữu ích: FindFile ffvà FindFilewithCopies ffc:

# Find if one file ever had into repository
ff = "!git log --pretty=format: --name-status --all -M -B | sort -u | grep $1   #"
# The same as above but showing copied files
ffc = "!git log --pretty=format: --name-status --all -C -M -B | sort -u | grep $1 #"

Bạn nhận được thông tin về tên tệp và hoạt động với chúng.

Sử dụng mẫu:

$ git ff create
A       database/migrations/2014_10_12_000000_create_users_table.php
A       database/migrations/2014_10_12_100000_create_password_resets_table.php
A       database/migrations/2015_05_11_200932_create_boletin_table.php
A       database/migrations/2015_05_15_133500_create_usuarios_table.php
D       database/migrations/2015_05_12_000000_create_users_table.php
M       database/migrations/2015_05_11_200932_create_boletin_table.php
R051    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_12_000000_create_users_table.php

$ git ffc create
A       database/migrations/2014_10_12_000000_create_users_table.php
A       database/migrations/2014_10_12_100000_create_password_resets_table.php
A       database/migrations/2015_05_11_200932_create_boletin_table.php
A       database/migrations/2015_05_15_133500_create_usuarios_table.php
C052    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_11_210246_create_boletin_nosend_table.php
D       database/migrations/2015_05_12_000000_create_users_table.php
M       database/migrations/2015_05_11_200932_create_boletin_table.php
R051    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_12_000000_create_users_table.php
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.