Разгоняем git
Трюки c git для эффективных разработчиков
Данная статья бесполезна, если Вы до сих пор кодите в блокноте - вопросы эффективности труда и экономии времени вряд ли Вас беспокоят. Но, если Вы хотите увеличить свою продуктивность и используете git, продолжайте чтение и освойте пару интересных трюков.
Нам потребуются файлы: .bashrc
для Linux или .bash_profile
, в случае, если Вы используете Mac или git bash для Windows
Git: загрязнен или нет?
Когда Вы программируете, определенную трудность составляет необходимость постоянно вводить команду git status
для того чтобы узнать, в какой ветке Вы находитесь и были ли модифицированы файлы. Давайте позволим терминалу предоставлять нам эту информацию. Добавим следующий код в .bash_profile
или .bashrc
:
function parse_git_dirty {
[[ -n "$(git status -s 2> /dev/null)" ]] && echo -e '\033[1;31m'
}
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/ $(parse_git_dirty)(\1)/"
}
if [ "$color_prompt" = yes ]; then
PS1="${debian_chroot:+($debian_chroot)}\[\033[01;36m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
Возможность изменения цвета текста в терминале должна быть включена.
В приведенном выше коде присутствуют две функции:
-
parse_git_dirty
- определят присутствует ли загрязненный код (который не закоммитили в репозитарий), -
parse_git_branch
- указывает, в какой ветке мы находимся.
И, наконец, фрагмент кода, который устанавливает цвет текста консоли.
Псевдонимы
Еще один полезный трюк - возможность определить псевдонимы для команд git:
alias gaa='git add -A'
alias gcm='git commit -m'
alias gcma='git commit -a -m'
alias gwait='git reset HEAD' # Unstages everything.
alias gl='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit'
alias gundo='git reset --soft HEAD^' # Undoes the last commit and moves the files in the commit to staging.
alias gco='git checkout'
alias gpusho="git push origin ${parse_git_branch}"
alias gpullo="git pull --rebase origin ${parse_git_branch}"
Автозаполнение
Еще один раздражающиий момент - отсутствие автозаполнения, внесем еще одно дополнение в .bash_profile
или .bashrc
:
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
if [ -f ~/.git-completion.bash ]; then
. ~/.git-completion.bash
fi
Надеюсь, эти трюки Вам пригодятся.
Спасибо за внимание.