Як змінити параметри закінчення рядків


581

Чи є файл або меню, яке дозволить мені змінити налаштування щодо роботи з закінченнями рядків?

Я прочитав, що є 3 варіанти:

  1. Оформити замовлення в стилі Windows, скористатися Unix-стилем

    Git перетворить LF в CRLF під час перевірки текстових файлів. Здійснюючи текстові файли, CRLF буде перетворений у LF. Для міжплатформних проектів це рекомендована установка для Windows (для "core.autocrlf" встановлено значення "true")

  2. Оформити замовлення так, як є, здійснити стиль Unix

    Git не виконає перетворення під час перевірки текстових файлів. Здійснюючи текстові файли, CRLF буде перетворений у LF. Для кросплатформних проектів це рекомендована настройка на Unix (для "core.autocrlf" встановлено значення "input").

  3. Оформити замовлення як є, зробити так, як є

    Git не здійснюватиме ніяких перетворень під час перевірки чи введення текстових файлів. Вибір цього параметра не рекомендується для міжплатформних проектів ("core.autocrlf" встановлено на "false")



3
Що з них за замовчуванням?
Стівен

2
Не забувайте, схоже, що за замовчуванням це правда, що я вважаю доречним.
Стівен

19
Я фактично вважаю, що 3-й варіант працює краще. Інакше я часто бував у ситуаціях, коли я редагував як пакетні, так і sh-скрипти на одній платформі (Windows / Linux), а потім здійснював їх і Git автоматично «виправляв» закінчення рядків для однієї платформи ... Ні, я вважаю за краще себе усвідомлюючи закінчення рядків і виконайте / перевіряйте їх такими, якими вони є.
JustAMartin

1
@Neutrino Я хотів би, щоб це було правдою, але одним із прикладів IDE, який змішується із закінченнями рядка (і не пропонує розумного варіанту конфігурації, щоб вимкнути це), є Visual Studio.
Кассіо Ренан

Відповіді:


528

Звичайний спосіб контролювати це git config

Наприклад

git config --global core.autocrlf true

Для отримання детальної інформації прокрутіть униз по цьому посилання на Pro Git до розділу "core.autocrlf"


Якщо ви хочете знати, в який файл зберігається цей файл , ви можете запустити команду:

git config --global --edit

і глобальний конфігураційний файл git повинен відкритися в текстовому редакторі, і ви можете побачити, звідки цей файл завантажений.


17
trueабо falseє лише два варіанти, інсталятор має три
qwertymk

49
inputє 3-м варіантом (як зазначено у наданому я посиланням). 3 варіанти - true| false| input
CodingWithSpike

2
Ось ще один хороший питання С.О. по темі: stackoverflow.com/questions/3206843 / ...
CodingWithSpike

31
Насправді, якщо ви перечитали власне запитання, у копії / вставлених уривках: "1 ... ("core.autocrlf" is set to "true") ... 2 ... ("core.autocrlf" is set to "input") ... 3 ... ("core.autocrlf" is set to "false")"ви в основному відповіли на власне запитання? :)
CodingWithSpike

2
Це старий спосіб обійти його. Подивіться на файл .gitattributes.
eftshift0

176

Формат закінчення рядка, що використовується в ОС

  • Windows: пара CRповернення каретки \rта пара LF(LineFeed \n)
  • OSX, Linux: LF(LineFeed \n)

Ми можемо налаштувати git для автоматичного виправлення форматів закінчення рядків для кожної ОС двома способами.

  1. Git Global конфігурація
  2. Використовувати .gitattributesфайл

Глобальна конфігурація

В Linux / OSX
git config --global core.autocrlf input

Це дозволить усунути будь-які CRLFщоб , LFколи ви робите.

У Windows
git config --global core.autocrlf true

Це переконається, що при оформленні замовлення у Windows все LFперетвориться наCRLF

.gitattributes File

Це хороша ідея зберегти .gitattributesфайл, оскільки ми не хочемо сподіватися, що всі в нашій команді встановлять свою конфігурацію. Цей файл повинен зберігатися у кореневому шляху репо, і якщо він існує, git буде його поважати.

* text=auto

Це розглядатиме всі файли як текстові файли та перетворюватиметься в рядок ОС, що закінчується на касі та повертається LFавтоматично до здійснення. Якщо хочете сказати прямо, тоді використовуйте

* text eol=crlf
* text eol=lf

Перший - для оформлення замовлення, а другий - для здійснення комісій.

*.jpg binary

Розглядайте всі .jpgзображення як бінарні файли, незалежно від шляху. Тому конверсія не потрібна.

Або ви можете додати класифікатори шляху:

my_path/**/*.jpg binary

3
А як щодо OS X, яка використовує CR(повернення каретки) поодинці?
jww

23
Legacy MacOS (тобто MacOS 9 і новіші версії) використовується CRокремо, але OS X зазвичай використовується LF.
Zachary Ware

2
Чи можу я * text eol=lfдва рази використовувати його для оформлення замовлення LFв Windows?
mbomb007

1
Згідно gitattributes документації настройка * text=autoдозволяє мерзотник вирішити , є чи зміст тексту чи ні. Примушування всіх файлів має бути * textлише текстовим .
Адріан Ш

Як встановити eol=crфайли на Mac OS 9 та інших застарілих платформах?
NobleUplift

36

Для рішення налаштування репозиторію, яке можна перерозподілити всім розробникам, перегляньте текстовий атрибут у файлі .gitattributes . Таким чином, розробникам не потрібно вручну встановлювати власні закінчення рядків у сховищі, а тому, що різні сховища можуть мати різні стилі закінчення рядків, глобальний core.autocrlf не найкращий, принаймні, на мою думку.

Наприклад, скидання цього атрибута для заданого шляху [ . - текст] змусить git не торкатися закінчень рядків під час реєстрації та виходу. На мою думку, це найкраща поведінка, оскільки більшість сучасних редакторів тексту можуть обробляти обидва типи закінчень рядків. Крім того, якщо ви як розробник все-таки хочете зробити конверсію рядків, що закінчуються під час реєстрації, ви все одно можете встановити шлях до відповідності певним файлам або встановити атрибут eol (у .gitattributes) у вашому сховищі.

Також перегляньте цю пов’язану публікацію, яка детальніше описує атрибут файлу та тексту .gitattributes атрибут файлів та тексту: Яка найкраща стратегія обробки CRLF (повернення каретки, подача рядків) з Git?


. - textдає is not a valid attribute name: .gitattributes:1будь ласка покладітьcat .gitattributes
jangorecki

3

Для мене те, що зробив трюк, було запуском команди

git config auto.crlf false

всередині папки проекту, я хотів це спеціально для одного проекту.

Ця команда змінила файл у шлях {project_name} /. Git / config (fyi .git - прихована папка), додавши рядки

[auto]
    crlf = false

в кінці файлу. Я вважаю, що зміна файлу також виконує той самий трюк.


1

Якщо ви хочете перетворити назад формати файлів, які були змінені на формат UNIX з формату ПК.

(1) Вам потрібно перевстановити GIT черепахи та в розділі "Перетворення рядка, що закінчується" переконайтесь, що ви вибрали опцію "Перевірити як є - Зареєструватися як є".

(2) та збережіть решту конфігурацій такими, якими вони є.

(3) після встановлення

(4) записати всі розширення файлів, які перетворюються у формат UNIX, у текстовий файл (extensions.txt).

ex:*.dsp
   *.dsw

(5) скопіюйте файл у свій клон Виконайте таку команду в GITBASH

while read -r a;
do
find . -type f -name "$a" -exec dos2unix {} \;
done<extension.txt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.