Saya memiliki struktur direktori seperti ini:
.git/
.gitignore
main/
...
tools/
...
...
Di dalam main dan tools, dan direktori lain, pada level apa pun, mungkin ada direktori 'bin', yang ingin saya abaikan (dan saya juga ingin mengabaikan semuanya di bawahnya). Saya sudah mencoba masing-masing pola ini di .gitignore tetapi tidak satupun yang berfungsi:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
Adakah yang bisa membantu saya? Pola pertama (yang menurut saya harusnya berfungsi) berfungsi dengan baik jika saya melakukan ini:
/main/**/bin/**/*
Tetapi saya tidak ingin memiliki entri untuk setiap direktori tingkat atas dan saya tidak ingin harus memodifikasi .gitignore setiap kali saya menambahkan yang baru.
Ini pada Windows menggunakan msysgit terbaru.
Sunting: satu hal lagi, ada file dan direktori yang memiliki substring 'bin' dalam nama mereka, saya tidak ingin itu diabaikan :)
**
sintaks tampaknya sekarang (Maret 2013, git 1.8.2) secara resmi didokumentasikan: lihat jawaban saya di bawahJawaban:
Sebelum versi 1.8.2,
**
tidak memiliki arti khusus dalam.gitignore
. Pada 1.8.2 git mendukung**
untuk berarti nol atau lebih sub-direktori (lihat catatan rilis ).Cara mengabaikan semua direktori yang disebut bin di mana saja di bawah level saat ini dalam pohon direktori adalah dengan
.gitignore
file dengan pola:Di
man
halaman tersebut, ada contoh mengabaikan direktori yang disebutfoo
menggunakan pola analog.Sunting: Jika Anda sudah memiliki folder bin di indeks git Anda yang tidak ingin Anda lacak maka Anda harus menghapusnya secara eksplisit. Git tidak akan berhenti melacak jalur yang sudah dilacak hanya karena sekarang cocok dengan
.gitignore
pola baru . Jalankan folder hapus ( rm ) dari indeks saja ( --cached ) secara berulang ( -r ). Contoh baris perintah untuk folder root bin:sumber
**
dalam.gitignore
file (sumber: 1.8.2 changelog )bin
sama daribin/
?bin
akan mengabaikan file bernama bin, sedangkanbin/
untuk direktori bernama binThe
.gitignore
mimpi Anda tampaknya menjadi:di tingkat atas.
sumber
Saya pikir perlu disebutkan untuk pemula git:
Jadi jika Anda ingin menambahkan untuk mengabaikan beberapa direktori di repositori lokal Anda (yang sudah ada) setelah mengedit .gitignore Anda ingin menjalankan ini pada direktori root Anda
Ini pada dasarnya akan 'menyegarkan' repo lokal Anda dan menghapus stage file yang diabaikan.
Lihat:
http://git-scm.com/docs/git-rm ,
https://help.github.com/articles/ignoring-files/
sumber
git add -A
komitmen saya, bisakah saya menggunakannya? dan bisakah saya mengganti titik dengan -A di baris pertama juga?Sebelumnya
**
tidak pernah bekerja dengan baik, tetapi sejak git 1.8.2 (8 Maret 2013) , tampaknya disebutkan dan didukung secara eksplisit:Dalam kasus Anda, itu berarti baris ini sekarang mungkin didukung:
sumber
cocok dengan huruf besar dan kecil
sumber
[B]in/
menjadi satu-satunya huruf besarBin
folder yang diabaikan dan biarkanbin
komit ke git?[B]in/
akan melakukanBin
danbin
.Bin/
!bin/
Saya tidak melihatnya disebutkan di sini, tetapi ini tampaknya case-sensitive. Setelah saya mengubah / Bin file diabaikan seperti yang diharapkan.
sumber
bin
, bukanBin
.[Bb]in
akan menyelesaikan masalah, tapi ... Di sini daftar yang lebih luas dari hal-hal yang harus Anda abaikan (daftar sampel oleh GitExtension):sumber
Jika Anda mencari
.gitignore
file global hebat untuk solusi Visual Studio (.NET) apa pun - Saya sarankan Anda untuk menggunakan ini: https://github.com/github/gitignore/blob/master/VisualStudio.gitignoreAFAIK memiliki yang paling komprehensif
.gitignore
untuk proyek .NET.sumber
Langkah 1: Tambahkan konten berikut ke file .gitignore.
Langkah 2: Pastikan mulai berlaku
Jika masalah masih ada, itu karena pengaturan di .gitignore hanya dapat mengabaikan file yang awalnya tidak dilacak . Jika beberapa file telah disertakan dalam sistem kontrol versi, maka memodifikasi .gitignore tidak valid. Untuk menyelesaikan masalah ini sepenuhnya, Anda perlu membuka Git Bash atau Package Manager Console (lihat tangkapan layar di bawah) untuk menjalankan perintah berikut di folder root repositori.
Maka masalah akan sepenuhnya terpecahkan.
sumber
Secara harfiah tidak ada jawaban yang benar-benar bekerja untuk saya; satu-satunya yang bekerja untuk saya adalah (di Linux):
sumber
bin
dalam sub-direktori juga?Sebagai pemberitahuan;
Jika Anda berpikir tentang
.gitignore
tidak bekerja dengan cara (jadi ditambahkanfoo/*
folder di dalamnya tetapigit status
masih menunjukkan konten folder yang diubah atau sesuatu seperti ini), maka Anda dapat menggunakan perintah ini;git checkout -- foo/*
sumber
untuk 2.13.3 dan selanjutnya, hanya menulis nampan di file .gitignore Anda harus mengabaikan nampan dan semua subdirektori dan file-nya
sumber
Menambahkan ** / bin / ke file .gitignore melakukan trik untuk saya (Catatan: folder bin tidak ditambahkan ke indeks).
sumber
Jika pola di dalamnya
.gitignore
berakhir dengan garis miring/
, hanya akan menemukan kecocokan dengan direktori.Dengan kata lain,
bin/
akan cocok dengan direktoribin
dan jalur di bawahnya, tetapi tidak akan cocok dengan file biasa atau tautan simbolikbin
.Jika polanya tidak mengandung garis miring , seperti dalam
bin
Git memperlakukannya sebagai pola glob shell (serakah). Jadi yang terbaik adalah menggunakan yang sederhana/bin
.bin
tidak akan menjadi solusi terbaik untuk masalah khusus ini.sumber
/
?Dalam kasus saya, penyandian file gitignore bermasalah, periksa apakah itu UTF-8
sumber