Apakah ada cara untuk menggunakan perintah seperti git ls-files
hanya menampilkan file yang tidak dilacak?
Alasan saya bertanya adalah karena saya menggunakan perintah berikut untuk memproses semua file yang dihapus:
git ls-files -d | xargs git rm
Saya ingin sesuatu yang serupa untuk file yang tidak dilacak:
git some-command --some-options | xargs git add
Saya dapat menemukan -o
opsi untuk git ls-files
, tetapi ini bukan yang saya inginkan karena juga menunjukkan file yang diabaikan. Saya juga bisa menghasilkan perintah panjang dan jelek berikut ini:
git status --porcelain | grep '^??' | cut -c4- | xargs git add
Sepertinya harus ada perintah yang lebih baik yang bisa saya gunakan di sini. Dan jika tidak ada, bagaimana cara membuat perintah custom git?
git
git-status
git-rm
git-stage
git-ls-files
Kita Semua Monica
sumber
sumber
git ls-files -d | xargs git rm
?git
hanya berfungsi pada file, itu tidak memiliki cara melacak folder kosong. Cobafind . -type d -empty
saja.Jawaban:
Untuk membuat daftar file yang tidak dilacak coba:
Jika Anda perlu menyalurkan output ke
xargs
, sebaiknya perhatikan ruang putih menggunakangit ls-files -z
danxargs -0
:Alias yang bagus untuk menambahkan file yang tidak dilacak:
Sunting: Untuk referensi: git-ls-file
sumber
!
artinya di awal baris alias, atau di mana itu didokumentasikan?git add *
akan melakukan hal yang sama: tambahkan semua file yang tidak terlacak tidak termasuk standar (file yang jalurnya tercakup.gitignore
)[alias] lso = "!f() { cd $(git rev-parse --show-toplevel); git ls-files -o; }; f"
Jika Anda hanya ingin menghapus file yang tidak dilacak, lakukan ini:
tambahkan
x
jika Anda juga ingin memasukkan file yang diabaikan secara khusus. Saya menggunakangit clean -dfx
sebuah banyak sepanjang hari.Anda dapat membuat custom git dengan hanya menulis sebuah skrip yang dipanggil
git-whatever
dan memilikinya di jalur Anda.sumber
git add -A
ataugit add -u
(tergantung mana yang lebih masuk akal bagi Anda)git add -A -n
akan melakukan apa yang Anda inginkan.-A
menambahkan semua file yang tidak dilacak ke repo,-n
membuatnya menjadidry-run
tempat add tidak dilakukan tetapi status output diberikan daftar setiap file yang akan ditambahkan.sumber
.gitignore
file, yang biasanya apa yang kita inginkan, tetapi jika tidakgit add -fAn
,.add '$file'
. Sedangkangit ls-files --exclude-standard -o
memberikan output telanjang, panas.Jawaban yang diterima crash pada nama file dengan spasi. Saya pada saat ini tidak yakin cara memperbarui perintah alias, jadi saya akan meletakkan versi yang disempurnakan di sini:
sumber
Semuanya sangat sederhana
Untuk mendapatkan daftar semua file yang tidak dilacak, gunakan status perintah git dengan opsi -u (--untracked-file)
sumber
--ignored
kegit status -u
perintahSaat mencari file untuk berpotensi menambah. Output dari
git show
melakukan itu tetapi juga mencakup banyak hal lainnya. Perintah berikut berguna untuk mendapatkan daftar file yang sama tetapi tanpa semua hal lainnya.Ini berguna ketika digabungkan dalam saluran pipa untuk menemukan file yang cocok dengan pola tertentu dan kemudian menyalurkannya ke
git add
.sumber
Saya tahu ini pertanyaan lama, tetapi dalam hal daftar file yang tidak terlacak saya pikir saya akan menambahkan satu lagi yang juga daftar folder yang tidak dilacak:
Anda dapat menggunakan operasi git clean dengan -n (dry run) untuk menunjukkan kepada Anda file mana yang akan dihapus (termasuk file .gitignore) dengan:
git clean -xdn
Ini memiliki keuntungan menampilkan semua file dan semua folder yang tidak dilacak. Parameter:
x
- Memperlihatkan semua file yang tidak dilacak (termasuk diabaikan oleh git dan lainnya, seperti membangun output dll ...)d
- tampilkan direktori yang tidak terlacakn
- dan yang paling penting! - dryrun, yaitu tidak benar-benar menghapus apa pun, cukup gunakan mekanisme bersih untuk menampilkan hasilnya.Ini bisa sedikit tidak aman untuk melakukannya seperti ini jika Anda lupa
-n
. Jadi saya biasanya alias di git config.sumber
Semua jawaban sebelumnya yang saya periksa akan mencantumkan file yang akan dikomit juga. Berikut ini adalah solusi sederhana dan mudah yang hanya mencantumkan file yang belum di repo dan belum tunduk
.gitignore
.atau
sumber
Saya pikir ini akan sama dengan yang dimaksudkan oleh poster aslinya:
git add .
sumber
git/svn add .
, anak kucing itu mati.git add .
dengan bebas dari hukuman!.gitignore
dengan benar. Masih bagus untuk dihindarigit add .
. Lebih baikgit add -u
.