Global Git Abaikan

841

Saya ingin mengatur Git untuk mengabaikan file-file tertentu secara global.

Saya telah menambahkan .gitignorefile ke direktori home saya ( /Users/me/) dan saya telah menambahkan baris berikut ke dalamnya:

*.tmproj

Tapi itu tidak mengabaikan jenis file ini, tahu apa yang saya lakukan salah?

Fuzz ringan
sumber
7
Anda mungkin juga ingin memeriksa saran Abaikan GitHub - help.github.com/articles/ignoring-files ; mereka memiliki repositori pola abaikan yang umum
drzaus
6
Anda mungkin juga ingin mempertimbangkan untuk hanya menggunakan .gitignore di dalam masing-masing proyek. Kalau tidak, jika Anda (atau orang lain) mengkloning proyek pada sistem baru, Anda juga harus membuat ulang file dan konfigurasi mengecualikan global setiap kali.
Stan Kurdziel
25
File yang dapat diabaikan yang dibuat oleh proyek harus berada dalam file .gitignore proyek, file yang dapat diabaikan yang diciptakan oleh mesin Anda harus masuk ke global .gitignore (seperti file temporer editor / IDE dan sejenisnya).
Pylinux
2
Direktori lingkungan virtual python adalah kasus penggunaan umum untuk entri di file excluded global atau lokal saya.
Stew
10
@Pylinux Sebenarnya, per git-scm , IDE pribadi, dan hal-hal khusus alur kerja dapat masuk ke file yang tidak terlacak .git/info/excludedalam repo, jadi tidak harus masuk ke file global. Juga, file global gitignore default dan otomatis adalah $HOME/.config/git/ignore.
Acumenus

Jawaban:

1422

Anda perlu mengatur core.excludesfilefile konfigurasi global Anda untuk menunjuk ke file pengabaian global ini.

misalnya

* nix atau Windows git bash:

git config --global core.excludesfile '~/.gitignore'

Windows cmd:

git config --global core.excludesfile "%USERPROFILE%\.gitignore"

Windows PowerShell:

git config --global core.excludesfile "$Env:USERPROFILE\.gitignore"

Untuk Windows diatur ke lokasi C:\Users\{myusername}\.gitignore. Anda dapat memverifikasi bahwa nilai konfigurasi sudah benar dengan melakukan:

git config --global core.excludesfile

Hasilnya harus berupa jalur yang diperluas ke profil pengguna Anda .gitignore. Pastikan nilai tersebut tidak mengandung %USERPROFILE%string yang tidak dikembangkan .

Penting : Perintah di atas hanya akan mengatur lokasi file abaikan yang akan digunakan git. File tersebut masih harus dibuat secara manual di lokasi itu dan diisi dengan daftar abaikan. (dari komentar muruge )

Anda dapat membaca tentang perintah di https://help.github.com/articles/ignoring-files/#create-a-global-gitignore

CB Bailey
sumber
2
Selama tidak ada dalam HEADindeks Anda atau Anda tidak akan membuat perbedaan apakah file itu pernah dilacak atau tidak. Mungkin bermanfaat jika Anda menambahkan output dari git status, git config core.excludesfileke pertanyaan Anda.
CB Bailey
2
Dapatkah saya menggunakan #di awal baris di dalam ~/.gitignoreuntuk menambahkan komentar di dalam file abaikan global?
Dror
9
Versi terbaru dari toolkit Git Windows resmi menggunakan sintaks * nix; jika baris ini tidak berfungsi, coba * nix yang sebaliknya.
Andy Jones
9
Saya tidak bisa menjalankan ini menggunakan %USERPROFILE%variabel. Saya harus memasukkan path lengkap ke file menggunakan pemisah direktori * nix. mis. core.excludesfile C: /Users/User/.gitignore
Vince
21
Tidak dapat berfungsi dengan variabel% USERPROFILE%. Saya harus menggunakan git config --global core.excludesfile '~ / .gitignore' di windows untuk mengaturnya ke lokasi C: / users / {myusername} /. Gitignore. Juga perintah di atas hanya akan menetapkan lokasi file abaikan yang akan digunakan git. File tersebut masih harus dibuat secara manual di lokasi itu dan diisi dengan daftar abaikan.
muruge
301

Sebelum mengkonfigurasi ulang file yang dikecualikan global, Anda mungkin ingin memeriksa apa itu saat ini dikonfigurasi, menggunakan perintah ini:

git config --get core.excludesfile

Dalam kasus saya, ketika saya menjalankannya saya melihat file global saya dikecualikan

~ / .gitignore_global
dan sudah ada beberapa hal yang terdaftar di sana. Jadi dalam kasus pertanyaan yang diberikan, mungkin masuk akal untuk memeriksa dulu file yang dikecualikan, dan menambahkan file mask baru ke dalamnya.

yanni
sumber
2
ini bekerja dengan baik. Atur file global gitignore Anda seperti biasa; satu entri per baris.
Maarten Hartman
237

Meskipun jawaban lain benar, mereka menetapkan nilai konfigurasi global sedangkan ada lokasi default git untuk file abaikan global git:

* nix:

~/.config/git/ignore

Windows:

%USERPROFILE%\git\ignore

Anda mungkin perlu membuat gitdirektori dan ignorefile tetapi kemudian Anda dapat mengabaikan global Anda ke dalam file itu dan hanya itu!

Sumber

File tempat menempatkan suatu pola tergantung pada bagaimana pola dimaksudkan untuk digunakan.

...

  • Pola yang ingin diabaikan pengguna dalam semua situasi (misalnya, cadangan atau file sementara yang dihasilkan oleh editor pilihan pengguna) umumnya masuk ke file yang ditentukan oleh core.excludesFilepengguna ~/.gitconfig. Nilai standarnya adalah $ XDG_CONFIG_HOME / git / abaikan. Jika $ XDG_CONFIG_HOME tidak disetel atau kosong, $ HOME / .config / git / abaikan digunakan sebagai gantinya.
Steve Jorgensen
sumber
1
Ini bagus; Saya tidak tahu tentang ini ... namun bukankah ini file yang dihasilkan? Bisakah itu ditimpa ketika Anda memperbarui / menginstal ulang?
danielsdesk
1
Saya percaya file dibuat / dimodifikasi dengan menjalankan gitperintah tertentu . Karena ini adalah file pengaturan di direktori masing-masing pengguna, saya tidak berpikir itu harus ditimpa.
Steve Jorgensen
1
Saya setuju ini harus menjadi jawaban yang diterima, namun saya tidak menemukan ini di -t̶h̶e̶ ̶d̶o̶c̶u̶m̶e̶n̶t̶a̶t̶i̶o̶n̶ artikel bantuan ( help.github.com/articles/ignoring-files )
AVProgrammer
1
@ AVProgrammer Saya baru saja mengedit jawaban untuk mencerminkan perubahan dalam bagaimana dokumen sumber diatur.
Steve Jorgensen
7
Sepertinya pada Windows path juga ~/.config/git/ignore.
suriv
40

Untuk membuat global gitignore dari awal:

$ cd ~
$ touch .gitignore_global
$ git config --global core.excludesfile ~/.gitignore_global
  1. Baris pertama mengubah direktori menjadi C:/Users/User
  2. Setelah itu Anda membuat file kosong dengan .gitignore_globalekstensi
  3. Dan akhirnya menyetel pengabaian global ke file itu.
  4. Maka Anda harus membukanya dengan semacam notepad dan menambahkan aturan abaikan yang diperlukan.
Phoera
sumber
18

Dari sini .

Jika Anda membuat file di repo Anda bernama .gitignore git akan menggunakan aturannya ketika melihat file yang akan dikomit. Perhatikan bahwa git tidak akan mengabaikan file yang sudah dilacak sebelum aturan ditambahkan ke file ini untuk mengabaikannya. Dalam kasus seperti itu file tersebut harus tidak dilacak, biasanya dengan:

git rm --cached filename

Apakah ini kasus Anda?

LaGrandMere
sumber
Saya mencoba untuk mengabaikan secara global, yang tidak terjadi !!
Mild Fuzz
@MildFuzz di Linux core.excludesfilefile tersebut tampaknya ditafsirkan berbeda dari .gitignorefile. Jika Anda ingin mengabaikan seluruh direktori, cukup letakkan nama direktori seperti .vscode/bukannya.vscode/*
Aspiring Dev
11

Jika Anda menggunakan sistem Unix, Anda dapat memecahkan masalah Anda dalam dua perintah. Di mana yang pertama menginisialisasi konfigurasi dan yang kedua mengubah file dengan file untuk diabaikan.

$ git config --global core.excludesfile ~/.gitignore
$ echo '.idea' >> ~/.gitignore
Purkhalo Alex
sumber
10
  1. Buat file .gitignore di direktori home Anda
touch ~/.gitignore
  1. Tambahkan file ke dalamnya ( folder tidak dikenali )

Contoh

# these work
*.gz
*.tmproj
*.7z

# these won't as they are folders
.vscode/
build/

# but you can do this
.vscode/*
build/*
  1. Periksa apakah git sudah memiliki global gitignore
git config --get core.excludesfile
  1. Beri tahu git di mana file itu berada
git config --global core.excludesfile '~/.gitignore'

Voila !!

Prerak Mann
sumber
"folder tidak dikenali" - Itu hanya salah, folder hanya berfungsi dengan baik ...
TobiX
7

Ingat bahwa menjalankan perintah

git config --global core.excludesfile '~/.gitignore'

hanya akan mengatur file global, tetapi TIDAK akan membuatnya. Untuk Windows, periksa direktori Users Anda untuk .gitconfigfile, dan edit ke preferensi Anda. Dalam kasus saya Seperti itu:

[core]
  excludesfile = c:/Users/myuser/Dropbox/Apps/Git/.gitignore
mouse md
sumber
3

Saya dapat mengabaikan .tmprojfile dengan memasukkan salah satu .tmprojatau *.tmprojdalam /users/me/.gitignore-globalfile saya .

Perhatikan bahwa nama file .gitignore-globaltidak .gitignore. Itu tidak bekerja dengan memasukkan .tmprojatau *.tmprojdalam file yang disebut .gitignoredi /users/medirektori.

Sri Sankaran
sumber
4
Tidak masalah apa yang Anda sebut file abaikan global Anda selama cocok dengan core.excludesfilekonfigurasi Anda .
CB Bailey
Ah! Poin bagus @CharlesBailey. Namun ini mungkin sesuatu yang penulis ingin periksa. Alasan .tmprojfile tidak diabaikan mungkin karena pengguna excludesfiletidak .gitignore.
Sri Sankaran
Saya kira dia pikir pengguna akan cukup pintar untuk menyadari.
WORMSS
2

Anda harus membuat file kecualikan untuk ini. Lihatlah intinya yang cukup jelas.

Untuk menjawab pertanyaan Anda, Anda mungkin perlu melakukan de-indeks .tmprojfile (jika Anda sudah menambahkannya ke indeks) dengan git rm --cached path/to/.tmproj, atau git adddan file commitAnda .gitignore.

Nic
sumber
Saya mencoba melakukan ini secara global, bukan hanya per repo
Mild Fuzz
Ya, itulah yang saya tautkan di intinya. Saya sedikit bingung dengan pertanyaan aslinya. Apakah kamu melakukan itu git rm --cached?
Nic
ya, coba itu. Menurut saya, saya telah mengikuti semua saran yang direkomendasikan! Apa yang saya lewatkan?
Mild Fuzz
Seperti yang disarankan, saya akan menambahkan status git Anda dan mengecualikan info ke pertanyaan :)
Nic
2

pada windows subsistem untuk linux saya harus menavigasi ke root subsistem cd ~/saat itutouch .gitignore dan kemudian memperbarui konfigurasi global gitignore di sana.

Saya harap ini membantu seseorang.

bboydflo
sumber
0

Jika Anda menggunakan VSCODE, Anda bisa mendapatkan ekstensi ini untuk menangani tugas untuk Anda. Ini mengawasi ruang kerja Anda setiap kali Anda menyimpan pekerjaan Anda dan membantu Anda untuk secara otomatis mengabaikan file dan folder yang Anda tentukan dalam pengaturan vscode Anda.

marcdomain
sumber