I Shar

I Shar

мир глазами веб-разработчика

Разгоняем git

Трюки c git для эффективных разработчиков

I Shar

время чтения 2 мин.

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

Возможность изменения цвета текста в терминале должна быть включена.

В приведенном выше коде присутствуют две функции:

  1. parse_git_dirty - определят присутствует ли загрязненный код (который не закоммитили в репозитарий),
  2. 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


Надеюсь, эти трюки Вам пригодятся.

Спасибо за внимание.

    • dev
    • git

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.