Gunakan git ls-tree -r HEAD --name-only jika Anda ingin membuat daftar file dari cabang saat ini
Ramast
3
Mengapa direktori tidak terdaftar?
Shuzheng
13
@NicolasLykkeIversen - gittidak versi direktori secara langsung. Sebaliknya ia menyimpan file dan jalurnya. ls-treeakan menampilkan semua file yang diversi. Untuk lebih memahami perbedaan ini, coba staging direktori kosong git. Direktori kosong tidak akan pernah muncul dalam perubahan bertahap. Satu-satunya cara untuk versi direktori kosong tersebut adalah untuk benar-benar versi file di bawah direktori. Untuk kasus penggunaan di mana Anda memerlukan direktori placeholder kosong di kontrol versi, Anda bisa membuat file dummy di bawah direktori, dan versi itu. Saya harap penjelasannya jelas.
Tuxdude
2
Perhatikan saja, ls-tree masterjangan tampilkan file yang terlacak di area pementasan.
nn0p
Apakah mungkin hanya menampilkan direktori tingkat atas jika direktori tersebut berisi banyak subdirektori dan file?
Blaszard
191
File yang dikelola oleh git ditunjukkan oleh git ls-files. Lihat halaman manualnya.
Itu tampaknya hanya menampilkan file di atau di bawah direktori saat ini.
Lyle Z
11
Keberatan jika saya mengedit ini untuk memasukkan bagian yang relevan dari halaman buku panduan?
Nathan Basanese
1
@NathanBasanese mungkin Anda dapat menambahkan jawaban lain dengan informasi itu.
José Castro
@ LyleZ Mungkin ini dimaksudkan agar sesuai dengan ls... atauls -R
flow2k
1
@ LyleZ Juga, perilaku ini sama dengan git ls-tree- itu relatif terhadap pwd.
flow2k
18
Jawaban yang diterima hanya menampilkan file di pohon direktori saat ini. Untuk menampilkan semua file yang dilacak yang telah dikomit (pada cabang saat ini), gunakan
git ls-tree --full-tree --name-only -r HEAD
--full-tree membuat perintah dijalankan seolah-olah Anda berada di direktori root repo.
-rberulang ke dalam subdirektori. Dikombinasikan dengan --full-tree, ini memberi Anda semua file berkomitmen, dilacak.
--name-only menghapus SHA / info izin ketika Anda hanya ingin path file.
HEADmenentukan cabang yang Anda inginkan dari daftar file yang dilacak dan berkomitmen untuk. Anda dapat mengubah ini menjadi masteratau nama cabang lain, tetapi HEADmerupakan komit yang telah Anda periksa sekarang.
The glralias Anda yang tersedia tampak agak aneh jadi saya membuat versi yang lebih konsisten dengan format alias pertama yang Anda berikan: alias glr='ls --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)'. Diuji dengan git version 2.20.1pada Debian 10.
Jawaban:
Jika Anda ingin membuat daftar semua file yang saat ini sedang dilacak di bawah cabang
master
, Anda dapat menggunakan perintah ini:Jika Anda ingin daftar file yang pernah ada (yaitu termasuk file yang dihapus):
sumber
git
tidak versi direktori secara langsung. Sebaliknya ia menyimpan file dan jalurnya.ls-tree
akan menampilkan semua file yang diversi. Untuk lebih memahami perbedaan ini, coba staging direktori kosonggit
. Direktori kosong tidak akan pernah muncul dalam perubahan bertahap. Satu-satunya cara untuk versi direktori kosong tersebut adalah untuk benar-benar versi file di bawah direktori. Untuk kasus penggunaan di mana Anda memerlukan direktori placeholder kosong di kontrol versi, Anda bisa membuat file dummy di bawah direktori, dan versi itu. Saya harap penjelasannya jelas.ls-tree master
jangan tampilkan file yang terlacak di area pementasan.File yang dikelola oleh git ditunjukkan oleh
git ls-files
. Lihat halaman manualnya.sumber
ls
... atauls -R
git ls-tree
- itu relatif terhadappwd
.Jawaban yang diterima hanya menampilkan file di pohon direktori saat ini. Untuk menampilkan semua file yang dilacak yang telah dikomit (pada cabang saat ini), gunakan
--full-tree
membuat perintah dijalankan seolah-olah Anda berada di direktori root repo.-r
berulang ke dalam subdirektori. Dikombinasikan dengan--full-tree
, ini memberi Anda semua file berkomitmen, dilacak.--name-only
menghapus SHA / info izin ketika Anda hanya ingin path file.HEAD
menentukan cabang yang Anda inginkan dari daftar file yang dilacak dan berkomitmen untuk. Anda dapat mengubah ini menjadimaster
atau nama cabang lain, tetapiHEAD
merupakan komit yang telah Anda periksa sekarang.Ini adalah metode dari jawaban yang diterima hingga ~ pertanyaan rangkap https://stackoverflow.com/a/8533413/4880003 .
sumber
Anda mungkin ingin keluaran berwarna dengan ini.
Saya menggunakan one-liner ini untuk membuat daftar file dan direktori yang dilacak di direktori saat ini dari cabang saat ini:
Anda mungkin ingin menambahkannya sebagai alias:
Jika Anda ingin mendaftarkan file secara rekursif:
Dan alias:
sumber
glr
alias Anda yang tersedia tampak agak aneh jadi saya membuat versi yang lebih konsisten dengan format alias pertama yang Anda berikan:alias glr='ls --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)'
. Diuji dengangit version 2.20.1
pada Debian 10.