Bagaimana mengatur beberapa `core.excludesfile` di` .gitconfig`?

13

Saya menyinkronkan ~/.gitconfigdan ~/.gitignorefile di ubuntu dan Mac dengan menggunakan dropbox dan membuat symlink untuk itu.

Dan excludesfiledinyatakan seperti ini.

[core]
        editor = /usr/bin/vim
        excludesfile = /Users/username/.gitignore

Masalahnya adalah direktori home berbeda oleh os, oleh karena itu saya perlu beberapa pengaturan untuk excludefile.

Apakah mungkin untuk mendefinisikan banyak core.excludesfile?

pasir besi
sumber

Jawaban:

17

Anda hanya dapat memiliki satu core.excludesfile; pengaturan terakhir adalah yang digunakan. Namun, Anda tidak memerlukan banyak file: git mendukung ~sebagai singkatan untuk direktori home Anda.

[core]
    excludesfile = ~/.gitignore

Secara umum, jika Anda benar-benar perlu memiliki beberapa file yang dikecualikan, solusi paling sederhana adalah membuat satu file yang merupakan gabungan dari yang lain, dan memperbaruinya setiap kali salah satu file berubah.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
My .gitconfigsebenarnya di bawah kontrol versi oleh git. Sayangnya, git berkembang ~menjadi path lengkap $HOMEdan memperbarui .gitconfigdirinya dengan path absolut. Perilaku itu baik-baik saja, tetapi kemudian muncul sebagai perubahan yang tidak dipentaskan, jadi saya gunakan git update-index --assume-unchanged .gitconfiguntuk mengabaikan ekspansi (bersama dengan sisa file).
Dolph
2
@Dolph status-norepro Apa yang Anda lakukan menyebabkan ~perluasan? Saya mendapatkan: git config --global core.excludesfile '~/.gitignore'; git config --global core.excludesfile~/.gitignore(git 1.7.9.5)
Gilles 'SO-stop being evil'
1
@ Dolph Kemungkinan besar ini adalah ekspansi shell; Lagi pula, jika Anda melakukannya git config --global core.excludesfile ~/.gitignoremaka apa yang sebenarnya dijalankan adalah git config --global core.excludesfile /path/to/home/.gitignore.
Radon Rosborough
1
@Gilles, perhatikan juga bahwa per git-scm , file ~/.config/git/ignorejika ada secara global diabaikan secara otomatis, tanpa diperlukan konfigurasi global.
Acumenus