Bagaimana cara mengabaikan semua direktori / file tersembunyi secara rekursif dalam repositori git?

128

Saya ingin agar Git mengabaikan semua file dan direktori tersembunyi. yaitu

  • .aptitude
  • .ssh/
  • .bash_rc
  • config/.hidden

Apakah ada aturan sederhana untuk membahas hal ini tanpa secara khusus menambahkan setiap entri?

Poe
sumber

Jawaban:

165

Tambahkan saja sebuah pola .gitignore

.*
!/.gitignore

Sunting: Menambahkan .gitignorefile itu sendiri (penting jika belum dilakukan).

Daniel Böhmer
sumber
3
Anda mungkin ingin memaksa-menambahkan beberapa file yang diperlukan setelah ini. misalnya. file .htaccess. Berdasarkan kebutuhan Anda tentunya.
dakdad
3
@dakdad: Terima kasih atas sarannya. Memperbaiki jawabannya. Jika Poe memiliki beberapa file khusus seperti .htaccesssudah diperiksa mereka terus diikuti. gitignorehanya penting untuk file baru.
Daniel Böhmer
@ DanielBöhmer Mungkin ini keluar dari subjek, tetapi apakah ada alasan untuk mengabaikan saja /.gitignoredan tidak setiap .gitignorefile terlepas dari di mana ia berada? Yaitu kenapa tidak daftar !.gitignore(tidak ada garis miring)?
Jason Young
1
@JasonYoung Pertanyaan yang menarik. Nah, pola ini un-abaikan saja file itu sendiri. Saya menemukan ini lebih ringkas tanpa efek samping sebagai contoh untuk menyalin & menempel. Tentu saja, Anda mungkin bisa mengabaikan .gitignorefile apa saja di .gitignorefile tingkat atas Anda . Tapi pilihan itu terserah Anda.
Daniel Böhmer
64

.gitignore hanya akan memengaruhi file yang belum 'ditambahkan'.

Untuk membuat entri .gitignore baru memengaruhi semua file

  1. Buat perubahan ke .gitignore
  2. git commit -a -m "Pre .gitignore changes"
  3. git rm -r --cached .
  4. git add .
  5. git commit -a -m "Post .gitignore changes"
  6. git status seharusnya menampilkan "nothing to commit (direktori kerja bersih)" `
Nat Darke
sumber
Baris "belum 'ditambahkan' sudah adalah kunci di sini, karena jika Anda sudah melakukan file yang diberikan, abaikan tidak akan berfungsi lagi padanya Anda harus menghapusnya dari repositori dan saat berikutnya Anda membuatnya .gitignore akan mengabaikannya.
Georgi Peev
21

Di .git/info/exclude, tambahkan baris ini:

.*

Ini akan membuat mengabaikan semua file tersembunyi / dot secara default sebagai default untuk setiap repositori pada mesin. .gitignoreFile terpisah untuk setiap repo tidak diperlukan dengan cara ini.

dibunuh oleh lucifer
sumber