Mengapa setiap kali saya mengeksekusi git pull
di server langsung saya, pemilik file diubah? Saya terus melakukan chown john:john index.php
.
Apa yang perlu saya ubah sehingga, ketika saya lakukan git pull
, pemilik file akan secara otomatis menjadi atau tetap john
?
john
pemilik direktori saat ini?git pull
?Jawaban:
Ketika Anda menggunakan
git pull
(yang setara dengangit fetch; git merge
), git akan memperbarui file tanpa mengubah pemilik (git tidak menyimpan informasi itu). Tetapi jika ada file baru untuk dibuat, pengguna saat ini akan ditetapkan sebagai pemilik.Ada solusi berbeda untuk menyelesaikan ini. Mungkin yang lebih mudah adalah dengan menambahkan
post-update
kait (di.git/hooks
direktori Anda ) untuk secara otomatis memanggilchown john:john . -R
setelah penggabungan / tarik ( lihat solusi SO untuk contoh ).Solusi alternatif adalah:
git pull
sebagai pengguna john alih-alih root (yang akan memerlukan izin tulis ke john untuk direktori .git).git pull
di dalampost-receive
kait dari repo telanjang).sumber
git fetch
sebagai root dan kemudiangit merge
sebagai pengguna john? Akankah John masih memerlukan izin menulis untuk.git
direktori?git fetch
sebagai root, file baru di .git / objek` mungkin memiliki root sebagai pemilik.git merge
sebagai pengguna john akan (sebagian besar waktu) mencoba untuk menimpa setidaknya.git/index
dan.git/HEAD
(yang mungkin dihapus / dibuat pada setiap perubahan saya kira), dan menulis beberapa file di.git/objects/
. + file baru di direktori kerja Anda. Mungkin ada pengecualian dengan penggabungan maju cepat misalnya.