Git: 1. Buat daftar semua file dalam satu cabang, 2. bandingkan file dari cabang yang berbeda

90
  1. Mencari perintah seperti ls -Ratau dir/syang dapat mencantumkan semua file dalam komit / cabang.
  2. Apakah ada perintah yang dapat membandingkan dua file dari cabang yang berbeda?
Gerakan cepat
sumber

Jawaban:

137
  1. git ls-tree -r --name-only <commit>(di mana alih-alih <commit>ada <branch>).
    Anda mungkin ingin menggunakan juga -topsi yang mencantumkan subdirektori sebelum turun ke dalamnya
  2. git diff <branchA>:<fileA> <branchB>:<fileB>,
    atau jika Anda ingin membandingkan file yang samagit diff <branchA> <branchB> -- <file>
Jakub Narębski
sumber
4
Jika Anda ingin membuat daftar direktori tertentu, Anda dapat menambahkan titik dua diikuti dengan jalur ke cabang yaitu: git ls-tree -r --name-only master: directory / path / name
miller the gorilla
27

Untuk membandingkan file yang sama dari cabang yang berbeda:

git diff branch_1..branch_2 file.txt

Untuk membuat daftar semua file di objek pohon:

git ls-tree -r branch
Dan Loewenherz
sumber
Saya mendapatkan "git: 'ls' bukan perintah git. Lihat 'git --help'." dan saya menggunakan git v 2.19.0.
Andrew S
1
Bukan hanya ls, Anda telah lupa -treepada akhirnya :)
Dan Loewenherz
Ah saya berasumsi adalah ls -tree. Saya pikir -pohon adalah sebuah saklar. Terima kasih.
Andrew S
25

Untuk mendaftar semua file yang ditambahkan di cabang baru

git diff --name-only branch1 master
Peter Mansell
sumber
4
Ini hanya mencantumkan nama semua file yang telah berubah, bukan hanya file baru.
Meredith
2

Mulai Git v2.1.0 [08/15/14]

Untuk daftar, Anda dapat menggunakan git ls-filesuntuk mendaftar semua file secara rekursif di indeks / direktori kerja saat ini. Anda dapat merujuk ke Git-SCM Docs / git-ls-files atau ketik man git-ls-filesjika Anda telah menginstal Git dan memiliki halaman manual.

Ini memiliki pilihan bagus untuk menampilkan file dengan cara yang berbeda seperti cached, staged, deleted, modified, ignoredatau othersuntuk tidak terlacak. Ini juga mendukung pola pencocokan. Memiliki juga --debugarg, Anda dapat dengan mudah daftar creation time, modification time, inode id, owner & group id, sizedan flagsuntuk file.


Untuk perbedaan dua cabang, gunakan saja git diff <branch> <other branch>seperti yang dinyatakan dalam jawaban lain.

Berkant Ipek
sumber
2

Buat daftar file di cabang dengan git ls-files

  1. Coba git ls-filesdijelaskan dalam dokumen git-scm :
# Switch to <branch> of interest
$ git checkout <branch>
# List all files in <branch>
$ git ls-files

Untuk opsi lebih lanjut, periksa dokumentasi .

drstoop
sumber