вторник, 25 марта 2014 г.

Git working togather

Разделители строк

OSExpects Character(s)
OSX/LinuxLF(LineFeed)
\n
WindowsCR(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



Комментариев нет:

Отправить комментарий