Pesan-pesan ini disebabkan oleh nilai default yang salah core.autocrlf
pada Windows.
Konsepnya autocrlf
adalah untuk menangani konversi akhir baris secara transparan. Dan itu benar!
Berita buruk : nilai harus dikonfigurasi secara manual.
Berita bagus : itu hanya boleh dilakukan SATU kali per instalasi git (per pengaturan proyek juga mungkin).
Bagaimana cara autocrlf
kerjanya :
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repo repo repo
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
Di sini crlf
= penanda end-of-line win-style, lf
= unix-style (dan mac osx).
(pre-osx cr
in tidak terpengaruh untuk salah satu dari tiga opsi di atas)
Kapan peringatan ini muncul (di bawah Windows)
- autocrlf
= true
jika Anda memiliki gaya unix lf
di salah satu file Anda (= Jarang),
- autocrlf
= input
jika Anda memiliki gaya menang crlf
di salah satu file Anda (= hampir SELALU),
- autocrlf
= false
- TIDAK PERNAH!
Apa artinya peringatan ini
Peringatan " LF akan digantikan oleh CRLF " mengatakan bahwa Anda (memiliki autocrlf
= true
) akan kehilangan LF gaya unix Anda setelah siklus commit-checkout (ini akan digantikan oleh CRLF gaya windows). Git tidak mengharapkan Anda untuk menggunakan LF unix-style di bawah windows.
Peringatan " CRLF akan digantikan oleh LF " mengatakan bahwa Anda (memiliki autocrlf
= input
) akan kehilangan CRLF gaya-windows setelah siklus komit-checkout (akan diganti dengan LF unix-style). Jangan gunakan di input
bawah windows.
Namun cara lain untuk menunjukkan cara autocrlf
kerjanya
1) true: x -> LF -> CRLF
2) input: x -> LF -> LF
3) false: x -> x -> x
di mana x adalah CRLF (gaya windows) atau LF (gaya unix) dan panah mewakili
file to commit -> repository -> checked out file
Bagaimana cara memperbaiki
Nilai default untuk core.autocrlf
dipilih selama instalasi git dan disimpan dalam gitconfig ( %ProgramFiles(x86)%\git\etc\gitconfig
) seluruh sistem ( ). Juga ada (mengalir dalam urutan berikut):
- gitconfig "global" (per-pengguna) terletak di ~/.gitconfig
, gitconfig
"global" (per-pengguna) lain di $XDG_CONFIG_HOME/git/config
atau $HOME/.config/git/config
dan
- " gitconfig " lokal "(per-repo) di .git/config
dalam direktori kerja.
Jadi, tulis git config core.autocrlf
di dir yang berfungsi untuk memeriksa nilai yang saat ini digunakan dan
- tambahkan autocrlf=false
ke solusi gitconfig # per-sistem di seluruh sistem
- git config --global core.autocrlf false
# solusi per pengguna
- git config --local core.autocrlf false
# solusi per proyek
Peringatan
- git config
pengaturan dapat ditimpa oleh gitattributes
pengaturan.
- crlf -> lf
Konversi hanya terjadi ketika menambahkan file baru, crlf
file yang sudah ada di repo tidak terpengaruh.
Moral (untuk Windows):
- use core.autocrlf
= true
jika Anda berencana untuk menggunakan proyek ini di bawah Unix juga (dan tidak mau mengkonfigurasi editor / IDE Anda untuk menggunakan ujung garis unix),
- use core.autocrlf
= false
jika Anda berencana untuk menggunakan proyek ini di bawah Windows saja ( atau Anda telah mengkonfigurasi editor / IDE Anda untuk menggunakan akhiran baris unix),
- tidak pernah menggunakan core.autocrlf
= input
kecuali Anda memiliki alasan yang baik untuk ( misalnya jika Anda menggunakan utilitas unix di bawah windows atau jika Anda mengalami masalah makefiles),
PS Apa yang harus dipilih ketika menginstal git untuk Windows?
Jika Anda tidak akan menggunakan salah satu proyek Anda di bawah Unix, jangan setuju dengan opsi pertama default. Pilih yang ketiga ( Periksa apa adanya, komit apa adanya ). Anda tidak akan melihat pesan ini. Pernah.
PPS Preferensi pribadi saya adalah mengonfigurasi editor / IDE untuk menggunakan ujung Unix-style, dan pengaturan core.autocrlf
ke false
.