Показаны сообщения с ярлыком git. Показать все сообщения
Показаны сообщения с ярлыком git. Показать все сообщения

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

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. Внимательно читаем выводимые сообщения, чтобы убедиться, что мы не застряли посреди ребейса с каким-нибудь конфликтом.

среда, 17 февраля 2016 г.

Git. Исправления "задним числом"

Нередко бывает, что нужно исправить какой-то коммит.
(Примечание: Исправлять что-либо можно только то, что вы еще не успели запушить, иначе проблемы возникнут уже не у вас, а у ваших коллег.)

1. Чаще всего, вы замечаете, что что-то забыли сразу же после того как только что сделали коммит. Этот случай самый простой.

четверг, 11 сентября 2014 г.

Азы git

Пришлось на днях объяснять азы гита. 

Часть 1

В отличие от многих других систем контроля версий (cvs) git оперирует не файлами, а строками. Т.е. для него первичны строки, а файлы им воспринимаются как некие контейнеры для строк. Например, если удалить какой-либо файл, то гит запишет это в своем репозитории (базе данных) именно как удаление всех строк из файла, впрочем сам файл он тоже пометит как удаленный, чтоб немелькал зазря в списках файлов (например, выдаваемый по команде git ls-files).

С git можно не беспокоится чего-то потерять. Он сохраняет ВСЕ изменения, в том числе и удаленные строки и файлы, и их всегда можно посмотреть и при необходимости откатить обратно. (Однако бойтесь команд с опциями --force или --hard - с ними все-таки можно что-то потерять).