пятница, 1 апреля 2016 г.

Все свое ношу с собой. Часть 4

Продолжения не будет.
Купил NAS DNS-327L. Поставил на него гитсервер, свою справочную систему на основе вики, торренткачалку и фильмораздавалку (потоковое видео). Пробросил виртуальный езернет-туннель на рабочий комп.
Раньше документы хранил в дропбоксе, что-то потяжелее в разных облачных хранилищах, свои проекты на битбакете, вырезки с инета на эверноте, торренты на ноутбуке (т.к. тихий и можно оставить на ночь). Теперь, какое-то приятное ощущение от того, что все в одном месте. Короче, вполне доволен получившимся комбайном. )))
Собственно, всю эту возню с NAS я потому и затеял, что несколько ранее используемых мною облачных сервисов, по разным причинам, прекратили свое существование, причем вместе с моими файлами, которые я не успел оттуда слить.

Git. Применение патчей

Про разрешение конфликтов писать не буду. На этот счет есть много материала.
Просто несколько маленьких хитростей на случай, когда вам прислали большой патч, а он не применяется.
Подробности о том, что именно не нравится гиту можно получить командой:
git apply -v <*.patch>
Иногда ему не нравятся переводы строк. Тогда попробуйте:
git apply --ignore-whitespace <*.patch>
или:
git am --keep-cr --whitespace=nowarn <*.patch> (эта команда сразу закомитит патч)
Самой полезной фишкой считаю:
git apply --reject <*.patch>
В этом случае гит применит все, что сможет, а то что не получается запишет в виде отдельных файлов с расширением *.rej. Очень удобно.

Как в git разбить один комит на несколько

Метода описана в мануале по гиту, однако, напишу и себе, чтоб не забыть.
git rebase -i <хэш_комита>^ (не забываем про ^ в конце)
В появившемся редакторе в первой строчке пишем edit вместо pick.
git reset HEAD^
Сейчас рабочий католог находится в состоянии как будто вы еще не сделали тот комит, который нужно разбить.
git add -p .
Клавишами 'y' и 'n' выбираем фрагменты, которые должны войти в первый разбитый комит. Если предлагаемый фрагмент слишком большой, его можно сократить клавишей 's' или даже подредактировать клавишей 'e' (при условии, что вы хорошо понимаете то, что делаете).
Делаем первый комит:
git commit -m"Комментарий".
Повторяем последние две команды пока не закончите разбиение, а затем делаем:
git rebase --continue
Если тут гит начнет ругаться, что не может сделать пустой комит, то это значит, что вы забрали из первоначального комита все изменения и он стал пустым. Тогда наберите:
git rebase --skip
Заканчиваем, если нужно, ребейс git rebase --continue. Внимательно читаем выводимые сообщения, чтобы убедиться, что мы не застряли посреди ребейса с каким-нибудь конфликтом.