Saya memiliki sebuah struktur direktori seperti ini:
.git/
.gitignore
main/
...
tools/
...
...
Dalam utama dan alat-alat, dan lainnya direktori, pada setiap tingkat, akan ada 'bin' direktori, yang saya ingin mengabaikan (dan aku ingin mengabaikan segala sesuatu di bawah itu juga). I've mencoba masing-masing pola .gitignore namun tidak satupun dari mereka bekerja:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
Siapapun dapat membantu saya? Pola pertama (yang saya pikir harus bekerja) bekerja baik-baik saja jika saya melakukan ini:
/main/**/bin/**/*
Tapi aku don't ingin memiliki sebuah entri untuk setiap top-level direktori dan saya don't ingin memodifikasi .gitignore setiap kali saya menambahkan yang baru.
Ini adalah di Windows menggunakan terbaru msysgit.
EDIT: satu hal lagi, ada file-file dan direktori yang memiliki substring 'bin' di nama mereka, aku don't ingin orang-orang dapat diabaikan :)
Sebelum versi 1.8.2, **
didn't memiliki makna khusus dalam .gitignore
. Sebagai 1.8.2 git mendukung **
berarti nol atau lebih sub-direktori (lihat catatan rilis).
Cara untuk mengabaikan semua direktori yang disebut bin di mana saja di bawah tingkat saat ini dalam sebuah pohon direktori adalah dengan .gitignore
file dengan pola:
bin/
Di man
halaman, ada contoh mengabaikan direktori yang disebut foo
menggunakan analog pola.
Edit:
Jika anda sudah memiliki folder bin di git indeks yang anda tidak ingin lagi track maka anda perlu untuk menghapus mereka secara eksplisit. Git won't stop tracking jalur yang sudah dilacak hanya karena mereka saat pertandingan baru .gitignore
pola. Mengeksekusi folder hapus (rm) dari indeks hanya (--cached) recursivelly (-r). Contoh baris perintah untuk root folder bin:
git rm -r --cached bin
The .gitignore
impian anda tampaknya:
bin/
di tingkat atas.
Saya pikir itu layak lagi untuk git pemula:
Jika anda sudah memiliki file memeriksa, dan anda ingin mengabaikannya, Git tidak akan mengabaikan file jika anda menambahkan aturan yang lebih baru. Dalam kasus tersebut, anda harus untrack file pertama, dengan menjalankan perintah berikut dalam terminal:
git rm --cached
Jadi jika anda ingin menambahkan untuk mengabaikan beberapa direktori dalam repositori lokal anda (yang sudah ada) setelah mengedit .gitignore yang ingin anda jalankan ini di root dir
git rm --cached -r .
git add .
Hal ini pada dasarnya akan 'menyegarkan' anda repo lokal dan disimpan file diabaikan.
Lihat:
The **
pernah benar bekerja sebelumnya, tapi karena git 1.8.2 (Maret, 8 2013), tampaknya secara eksplisit disebutkan dan yang didukung:
pola dalam
.gitignore
dan.gitattributes
file dapat memiliki `/`, sebagai pola yang cocok dengan 0 atau lebih tingkat dari subdirektori**.
E. g. "
foo/**/bar
" pertandingan "bar
" dalam "foo
" sendiri atau di sebuah subdirektori dari "foo
".
Dalam kasus anda, itu berarti garis ini sekarang mungkin didukung:
/main/**/bin/
[Bb]di
akan memecahkan masalah, tapi...
Di sini yang lebih luas daftar hal-hal yang anda harus mengabaikan (daftar sampel dengan GitExtension):
#ignore thumbnails created by windows
Thumbs.db
#Ignore files build by Visual Studio
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.bak
*.cache
*.ilk
*.log
[Bb]in
[Dd]ebug*/
*.sbr
obj/
[Rr]elease*/
_ReSharper*/
Jika anda're looking for a great global .gitignore
file untuk setiap Visual Studio ( .NET ) solusi - saya sarankan anda untuk menggunakan yang satu ini: https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
AFAIK itu yang paling komprehensif .gitignore
untuk .Proyek-proyek yang BERSIH.
Langkah 1: Menambahkan konten berikut ke file .gitignore.
*.suo
*.user
*.userosscache
*.sln.docstates
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
# Visual Studio 2015 cache/options directory
.vs/
Langkah 2: pastikan berlaku
Jika masalah masih ada, yang's karena pengaturan di .gitignore hanya dapat mengabaikan file-file yang awalnya tidak dilacak. Jika beberapa file yang sudah termasuk dalam sistem kontrol versi, kemudian memodifikasi .gitignore adalah tidak valid. Untuk memecahkan masalah ini benar-benar, anda perlu untuk membuka Git Bash atau Package Manager Console (lihat gambar di bawah) untuk menjalankan perintah berikut dalam repositori root folder.
$ git rm -r --cached .
$ git add .
$ git commit -m 'Update .gitignore'
Sebagai pemberitahuan;
Jika anda berpikir tentang .gitignore
tidak bekerja di jalan (jadi tambah foo/*
folder di dalamnya tapi git status
masih menunjukkan bahwa isi folder(s) sebagaimana telah diubah atau sesuatu seperti ini), maka anda dapat menggunakan perintah ini;
git checkout -- foo/*
Jika pola dalam .gitignore
diakhiri dengan slash /
, itu hanya akan menemukan kecocokan dengan direktori.
Dengan kata lain, bin/
akan cocok direktori bin
dan jalan di bawahnya, tapi tidak akan cocok dengan file biasa atau link simbolik bin
.
Jika pola tidak mengandung slash, seperti dalam bin
Git memperlakukan itu sebagai shell glob pola (serakah). Jadi yang terbaik adalah dengan menggunakan simple /bin
.
bin
tidak akan menjadi solusi terbaik untuk masalah ini.