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?

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>

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

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

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.


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 .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.