Pertanyaan mengabaikan direktori 'bin' apa pun pada proyek git


Saya memiliki struktur direktori seperti ini:

.git/
.gitignore
main/
  ...
tools/
  ...
...

Di dalam alat utama dan, dan direktori lainnya, pada tingkat apa pun, bisa ada direktori 'bin', yang saya ingin abaikan (dan saya juga ingin mengabaikan semuanya di bawahnya). Saya sudah mencoba masing-masing pola ini di gitignore tetapi tidak satupun dari mereka 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 saya pikir harus bekerja) berfungsi dengan baik jika saya melakukan ini:

/main/**/bin/**/*

Tetapi saya tidak ingin memiliki entri untuk setiap direktori level teratas dan saya tidak ingin memodifikasi .gitignore setiap kali saya menambahkan yang baru.

Ini ada di Windows menggunakan msysgit terbaru.

EDIT: satu hal lagi, ada file dan direktori yang memiliki 'bin' substring di nama mereka, saya tidak ingin itu diabaikan :)


977
2017-09-24 09:13


asal


Jawaban:


Sebelum versi 1.8.2, ** tidak memiliki arti khusus dalam .gitignore. Seperti 1.8.2 git mendukung ** berarti nol atau lebih sub-direktori (lihat lepaskan catatan).

Cara untuk mengabaikan semua direktori yang disebut bin di mana saja di bawah level saat ini dalam pohon direktori adalah dengan .gitignore file dengan pola:

bin/

Dalam man halaman, ada contoh mengabaikan direktori yang disebut foo menggunakan pola analog.

Edit:  Jika Anda sudah memiliki folder bin di indeks git yang tidak ingin Anda lacak lagi, Anda harus menghapusnya secara eksplisit. Git tidak akan berhenti melacak jalur yang sudah dilacak hanya karena mereka sekarang cocok dengan yang baru .gitignore pola. Jalankan folder remove (rm) dari indeks saja (--cached) secara rekursif (-r). Contoh baris perintah untuk folder akar bin:

git rm -r --cached bin

1472
2017-09-24 09:35



Itu .gitignore impian Anda tampaknya:

bin/

di tingkat atas.


399
2017-09-24 09:16



Saya pikir itu perlu disebutkan untuk pemula git:

Jika Anda sudah memiliki file yang diperiksa, dan Anda ingin mengabaikannya, Git   tidak akan mengabaikan file jika Anda menambahkan aturan nanti. Dalam kasus itu, Anda   harus membuka file terlebih dahulu, dengan menjalankan perintah berikut di   terminal:

git rm --cached

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

git rm --cached -r .
git add .

Ini pada dasarnya akan 'me-refresh' repo lokal Anda dan file-file yang diabaikan.

Lihat:

http://git-scm.com/docs/git-rm,

https://help.github.com/articles/ignoring-files/


176
2018-05-13 08:54



Itu ** tidak pernah bekerja dengan baik sebelumnya, tetapi sejak itu git 1.8.2 (8 Maret 2013), tampaknya secara eksplisit disebutkan dan didukung:

Pola-pola di .gitignore dan .gitattributes file bisa memperoleh **/, sebagai pola yang cocok dengan 0 atau lebih tingkat subdirektori.

Misalnya. "foo/**/bar"pertandingan"bar" di "foo"Sendiri atau dalam subdirektori"foo".

Dalam kasus Anda, itu berarti baris ini sekarang mungkin didukung:

/main/**/bin/

68
2018-04-23 09:20



[Bb]in/

cocok dengan huruf besar dan kecil


43
2017-08-30 05:32



Saya tidak melihatnya disebutkan di sini, tetapi ini tampaknya sensitif huruf. Setelah saya mengubah ke / Bin, file diabaikan seperti yang diharapkan.


30
2017-10-08 22:00



[Bb]inakan menyelesaikan masalah, tapi ... Di sini daftar yang lebih luas dari hal-hal yang harus Anda abaikan (daftar sampel oleh 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*/

23
2018-01-03 00:23



Jika Anda mencari global yang hebat .gitignore file untuk solusi Visual Studio (.NET) - Saya sarankan Anda untuk menggunakan yang ini: https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

AFAIK itu memiliki yang paling komprehensif .gitignore untuk proyek .NET.


16
2017-07-30 14:33



Sebagai pemberitahuan;

Jika kamu memikirkannya .gitignore tidak bekerja dengan cara (jadi ditambahkan foo/* folder di dalamnya tetapi git status masih menunjukkan bahwa konten folder (s) seperti yang diubah atau sesuatu seperti ini), maka Anda dapat menggunakan perintah ini;

git checkout -- foo/*


5
2018-02-17 09:33



untuk 2.13.3 dan seterusnya, menulis hanya bin di file .gitignore Anda harus mengabaikan bin dan semua subdirektorinya dan file

tempat sampah


3
2017-08-03 16:41