Разделители строк
| OS | Expects Character(s) |
|---|---|
| OSX/Linux | LF(LineFeed) \n |
| Windows | CR(Carriage Return) and LF pair \r\n |
On Unix-like systems:
$ git config --global core.autocrlf input
Настройка меняет при комите CR/LF -> LF
On Windows systems:
> git config --global core.autocrlf true
Настройка меняет при чекауте LF -> CR/LF, но изменяет назад CR/LF -> LF при коммите
On Windows-only projects:
> git config --global core.autocrlf false
Git attributes file
Чтобы новопришедшим людям не скидывать каждый раз список аттрибутов, которые они должны установить для их локального репозитория проекта, мы должне в корне проекта сохранить файл с настройками
.gitattributes:
| * text=auto *.html text *.css text *.bat text eol=crlf *.sh text eol=lf *.jpg binary |
В левой колонки у нас типы файлов, а в правой настройки конвертации
Настройки конвертации:
text=auto - выбирать автоматически
text - обработка файла как текст - конвертация в характерные для ОС разделители строк при чекауте, и назад в LF при коммите.
text eol=crlf | text eol=lf - ковертация в конкретно указанный разделитель строки на чекауте, но при коммитах всегда в LF
binary - не делать никаких конвертаций разделителя строки
Cherry-pick
$ git cherry-pick 53212e5
Мы конкретный коммит, который находится в другой бранчи, заливаем в поточную бранчу - мы делаем копию комита из одной бранчи в другой.
Есть также возможность отредактировать сообщение черипика, а не оставить тоже самое, что и в другом бранче:
$ git cherry-pick --edit 5321
Взять несколько коммитов, обьединить их в один, и зачерипикать
$ git cherry-pick --no-commit 53212e5 55ae374
--no-commit - стягивает изменения из указанныз коммитов и размещает их в стейджинг ериа, не делая коммита
После этого мы делаем один комит с нашим собственным сообщением.
Чтобы сохранить в истории пометку о том, что конкретный коммит был зачерипикан, мы делаем следующее:
$ git cherry-pick -x 5321
-x adds source SHA to commit message. По этом ключу нужно помнить одно, что не нужно делать такие ссылки на локальные бранчи, которые не попали/не попадут
Конечно же важно оставить в истории пометку кто сделал черипик, а не кто автор целевого комита, чтобы если что идти бить именно автора переноса комита:) :
$ git cherry-pick --signoff 5321
--signoff adds current user's name to commit message
Комментариев нет:
Отправить комментарий