Saya menggunakan laptop pribadi saya untuk pekerjaan dan proyek pribadi dan saya ingin menggunakan alamat email kantor saya untuk komitmen saya di tempat kerja (gitolite) dan alamat email pribadi saya untuk sisanya (github).
Saya membaca tentang solusi berikut yang semuanya bersifat global atau sementara:
git config --global user.email "[email protected]"
git config user.email "[email protected]"
git commit --author "Bob <[email protected]>"
- pengaturan salah satu
GIT_AUTHOR_EMAIL
,GIT_COMMITTER_EMAIL
atauEMAIL
variabel lingkungan
Salah satu solusinya adalah menjalankan fungsi shell secara manual yang mengatur lingkungan saya untuk bekerja atau pribadi , tetapi saya cukup yakin bahwa saya akan sering lupa untuk beralih ke identitas yang benar sehingga membuat saya melakukan dengan identitas yang salah.
Apakah ada cara untuk mengikat repositori tertentu, nama proyek, dll. Ke identitas (nama, email)? Apa yang orang-orang lakukan?
git
github
gitolite
git-config
Martin Jambon
sumber
sumber
Jawaban:
git config user.email "[email protected]"
Melakukan itu di dalam repo akan mengatur konfigurasi pada repo ITU, dan tidak secara global.
Sepertinya itulah yang Anda cari, kecuali saya salah paham.
sumber
Anda perlu menggunakan perintah set lokal di bawah ini:
set lokal
mendapatkan lokal
File konfigurasi lokal dalam direktori proyek:
.git/config
.set global
mendapatkan global
File konfigurasi global di dalam direktori home Anda:
~/.gitconfig
.Ingatlah untuk mengutip kosong, dll, misalnya: 'FirstName LastName'
sumber
Edit file konfigurasi dengan dalam folder ".git" untuk mempertahankan nama pengguna dan email yang berbeda tergantung pada repositori
Perintah di bawah ini menunjukkan kepada Anda nama pengguna dan email mana yang disetel untuk repositori ini.
Contoh: untuk saya yang file konfigurasi di D: \ workspace \ eclipse \ ipchat \ .git \ config
Di sini ipchat adalah nama repo saya
sumber
Jika Anda menggunakan
git config user.email "[email protected]"
itu akan terikat ke proyek Anda saat ini.Itulah yang saya lakukan untuk proyek saya. Saya menetapkan identitas yang sesuai saat saya mengkloning / menginit repo. Ini bukan bukti yang bodoh (jika Anda lupa dan mendorong sebelum Anda mengetahuinya, Anda disemprot) tetapi ini sebaik yang Anda bisa dapatkan tanpa kemampuan untuk mengatakan
git config --global user.email 'ILLEGAL_VALUE'
Sebenarnya, Anda bisa membuat nilai ilegal. Atur
git config --global user.name $(perl -e 'print "x"x968;')
Kemudian jika Anda lupa menyetel nilai non-global Anda, Anda akan mendapatkan pesan kesalahan.
[EDIT] Pada sistem yang berbeda saya harus meningkatkan jumlah x menjadi 968 untuk membuatnya gagal dengan "fatal: Pengenal pribadi yang sangat panjang". Versi git yang sama. Aneh.
sumber
Jika Anda tidak menggunakan
--global
parameter, itu akan mengatur variabel hanya untuk proyek saat ini.sumber
Mulai Git 2.13, Anda dapat menggunakan sebuah
includeIf
di gitconfig Anda untuk menyertakan file dengan konfigurasi berbeda berdasarkan jalur repositori tempat Anda menjalankan perintah git.Sejak Git yang cukup baru hadir dengan Ubuntu 18.04, saya telah menggunakan ini dengan
~/.gitconfig
cukup senang.https://motowilliams.com/conditional-includes-for-git-config#disqus_thread
Untuk menggunakan Git 2.13 Anda perlu menambahkan PPA (Ubuntu lebih lama dari 18.04 / Debian) atau mengunduh binari dan menginstal (Windows / Linux lainnya).
sumber
git config core.sshCommand
untuk beberapa kunci pribadi, memberikan manajemen identitas git tanpa batas yang lengkap.Itulah tepatnya masalah saya. Saya telah menulis skrip hook yang memperingatkan Anda jika Anda memiliki remote github dan tidak menetapkan nama pengguna lokal.
Berikut cara Anda menyiapkannya:
Buat direktori untuk menahan pengait global
mkdir -p ~/.git-templates/hooks
Beri tahu git untuk menyalin semuanya
~/.git-templates
ke.git
direktori per proyek saat Anda menjalankan git init atau clonegit config --global init.templatedir '~/.git-templates'
Dan sekarang salin baris berikut ke
~/.git-templates/hooks/pre-commit
dan buat file tersebut dapat dieksekusi (jangan lupa ini jika tidak git tidak akan menjalankannya!)Jika Anda menggunakan host lain untuk repositori pribadi Anda, Anda harus mengganti
github.com
sesuai dengan kebutuhan Anda.Sekarang setiap kali Anda melakukan
git init
ataugit clone
git akan menyalin skrip ini ke repositori dan mengeksekusinya sebelum komit apa pun dilakukan. Jika Anda belum menyetel nama pengguna lokal, itu akan mengeluarkan peringatan dan tidak akan membiarkan Anda berkomitmen.sumber
Saya sangat menyukai cara Micah Henning dalam artikelnya (lihat Menyiapkan Identitas Git ) tentang subjek ini. Fakta bahwa ia menerapkan dan memaksa identitas ke setiap repositori yang dibuat / dikloning adalah cara yang baik untuk tidak lupa menyiapkannya setiap saat.
Konfigurasi git dasar
Batalkan pengaturan konfigurasi pengguna saat ini di git:
Paksa konfigurasi identitas pada setiap repositori lokal baru:
Buat alias Git untuk
identity
perintah, kita akan gunakan nanti:Penciptaan identitas
Buat identitas dengan GPG (gunakan
gpg
ataugpg2
bergantung pada apa yang Anda dapatkan di sistem Anda). Ulangi langkah selanjutnya untuk setiap identitas yang ingin Anda gunakan.Salin blok kunci publik dan tambahkan ke setelan GitHub / GitProviderOfChoice Anda sebagai kunci GPG.
Tambahkan identitas ke konfigurasi Git. Ulangi juga ini untuk setiap identitas yang ingin Anda tambahkan:
Siapkan identitas untuk repositori
Jika repo baru tidak memiliki identitas terkait, kesalahan akan muncul saat komit, mengingatkan Anda untuk menyetelnya.
Tentukan identitas yang Anda inginkan pada repositori baru:
Anda sekarang siap untuk berkomitmen dengan identitas gitlab .
sumber