Imagine you have a feature branch with the latest changes, which you need to rebase by master. The problem is master have some changes too, but not the ones you do really care about. Of course, it is possible to run the following code and one by one resolve all annoying issues.
How to use git strategies2 min read
ContinueУдаление паролей из истории Git2 min read
ContinueGreat Scott! Почему это важно?
Любая система хранения версий кода создана с целью сохранения всех изменений проекта за всю историю его существования и (следует признать) любая система хранения версий справляется с этим отлично. Поэтому будьте уверены, если когда-то в вашем коде промелькнул пароль, токен или ключ — он не пропадет в тот момент, когда вы уберете его из актуального кода и злоумышленник сможет получить к нему доступ тогда, когда все уже забудут про сам факт существования важной информации в каком-то старом коммите.
Миграция с Mercurial на Git1 min read
Continuemigration Иногда возникает необходимость продолжать работу над старыми проектами, в которых могут использоваться устаревшие системы версий — например, mercurial или, боже упаси, svn. К счастью, для перехода с mecurial на git не требуется начинать проект с чистого листа и терять историю изменений, есть утилита, которая всё сделает для нас сама.
cd git clone git://repo.or.cz/fast-export.git git init git_repo cd ~/git_repo ~/fast-export/hg-fast-export.sh -r ~/mercurial-repo git checkout HEAD
В итоге, в текущей папке мы получим самый настоящий git.
Ветка git в командной строке1 min read
ContinueЕсли активная работа над проектом идет над несколькими ветками сразу, всегда полезно знать, на какой ветке в текущий момент находится указатель HEAD репозитария. Чтобы не полагаться на память, можно добавить отображение названия ветки в приглашение командной строки. Для этого откроем на редактирование ~/.bashrc
export PS1='\[email protected]\h: \w\[\033[01;33m\]$(__git_ps1) \$\[\033[00m\] '
Любуемся результатом:
Но, по хорошему, лучше просто поставьте zsh — оно того стоит.
Как вежливо попросить git напомнить о миграциях2 min read
ContinueИногда важно помнить о том, что вместе с апдейтом кода появилась и новая миграция, которую нужно бы не забыть запустить. Первый вариант — git merge-base и еще несколько полезных команд. Задачу это решает, но требует множества действий — есть простор для фантазии и автоматизации. Пускай git сам напоминает нам о новых миграциях!
Первичная настройка git1 min read
ContinueАлиасы
Получение статуса
git config --global alias.st status git st
Наглядный лог
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" git lg git lg -p
Настройка пользователя
git config --global user.name "Username" git config --global user.email "[email protected]"
Добавим цвета
git config --global color.branch auto git config --global color.diff auto git config --global color.interactive auto git config --global color.status auto
Как привести в порядок репозитарий3 min read
ContinueВсегда приятно начинать проект с нуля, самому создавать под него репозитарий, определять принятый в нём стиль кодирования, да и многое другое. Но иногда нам достаются «трудные дети» с тяжелым прошлым, включающим мешанину табуляции и пробелов, разных способов обрыва строки, кодировок. Понятное дело, что все это приводит систему контроля версий к истерике. Но не беда. Linux to the rescue!
Актуальная версия Git на Ubuntu1 min read
ContinueДобавляем репозиторий
add-apt-repository ppa:git-core/ppa apt-get update apt-get install git-core
Если в системе нет add-apt-repository, необходимо перед этим поставить еще один пакет
sudo apt-get install python-software-properties
Ура, у нас современная версия git!