Продуктивность с помощью псевдонимов Git

Прошел год с того дня, когда я начал работать на своей настоящей работе, и это была первая работа, на которой мне пришлось использовать git, и с этого дня я не переставал им пользоваться, он просто потрясающий.

Но одна вещь, которая меня очень расстроила, это то, что в некоторых случаях команды git могут быть очень длинными или не интуитивно понятными. Кроме того, некоторые команды показывают много информации, которую я не хочу видеть.

Например, команды git status и git log последовательно показывали что-то вроде этого:

➜ git status
On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
 new file:   added_file
 new file:   delete_file
 new file:   renamed_file
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
 deleted:    delete_file
 deleted:    renamed_file
Untracked files:
  (use "git add <file>..." to include in what will be committed)
 fourth_file
 new_file
  now_renamed_file
Войти в полноэкранный режим Выйти из полноэкранного режима

➜ git log
commit 895e76a4e71ecc4cc65de27e4429ffce165cccff (HEAD -> main)
Author: Marco Antonio Bet <example@example.com>
Date:   Fri Jan 7 15:52:36 2022 -0300
third file
commit 86deb1bb03edabb56e4cb5d84289fe7ab3025607
Author: Marco Antonio Bet <example@example.com>
Date:   Fri Jan 7 15:52:10 2022 -0300
second commit
commit d8fb730fe75482bdcc4cfd923ffdbdec95953a5a
Author: Marco Antonio Bet <example@example.com>
Date:   Fri Jan 7 15:52:02 2022 -0300
first commit
Войти в полноэкранный режим Выйти из полноэкранного режима

Поэтому мне интересно, есть ли лучший способ отображения этих частей информации.

Давайте начнем с более простого — git status, но сначала нам нужно понять, как установить git alias.

Способы установки псевдонима git

Существует два способа установки git alias, один из них — это команды в терминале, а другой — редактирование файла ~/.gitconfig.

Например, установка улучшений статуса git с помощью команд терминала будет выглядеть следующим образом:

➜ git config --global alias.ss status -sb
Войти в полноэкранный режим Выйти из полноэкранного режима

Но если вы хотите установить псевдоним git с помощью текстового редактора:

➜ git config --global --edit
Войти в полноэкранный режим Выйти из полноэкранного режима

Эта команда откроет редактор по умолчанию для git.

Вы также можете открыть файл ~/.gitconfig с помощью vim ~/.gitconfig, code ~/.gitconfig или любого другого текстового редактора.


Теперь позвольте мне вернуться к тому, на чем я остановился.

➜ git config --global alias.ss status -sb
Вход в полноэкранный режим Выйти из полноэкранного режима

Итак, с этим новым псевдонимом, как мы можем его использовать?

➜ git ss
Войти в полноэкранный режим Выйти из полноэкранного режима

Это покажет уменьшенный git status вывод.

➜  git_alias git:(main) ✗ git ss    
## main
A  added_file
AD delete_file
AD renamed_file
?? fourth_file
?? new_file
?? now_renamed_file
Войти в полноэкранный режим Выход из полноэкранного режима

Вы можете спросить себя, что такое флаг -sb в команде git status.

  • s: Вывод в коротком формате.
  • b: Показать текущую ветку

Таким образом, всего лишь немного изменив команду git status, вы сможете получить более качественный вывод.

С улучшением git log мы пойдем немного вперед, и я покажу вам два типа псевдонима, которые у меня сейчас есть.

Первый тип псевдонима журнала git

Псевдоним:

➜ git config --global alias.ll !git log --pretty=format:'%C(blue)%h %C(cyan)%ae %C(green)%cr%C(red)%d %C(white)%s’
Войти в полноэкранный режим Выйти из полноэкранного режима

Вывод будет выглядеть примерно так:

➜ git ll
895e76a example@example.com 38 minutes ago (HEAD -> main) third file
86deb1b example@example.com 39 minutes ago second commit
d8fb730 example@example.com 39 minutes ago first commit
Войти в полноэкранный режим Выход из полноэкранного режима

Это мой любимый из двух вариантов, потому что он показывает HASH, Email, дату и сообщение о фиксации.

Вы, наверное, спросите себя, что такое флаг —pretty=format: в команде git log. По сути, эта команда требует опцию, которая может быть плейсхолдером, которым в данный момент является наша опция.

Каждый плейсхолдер начинается со знака %. А плейсхолдер %C означает цвет, как вы можете видеть, внутри скобки всегда есть название цвета.

Список заполнителей, используемых в этой команде:

  • %C(): Изменить цвет текста.
  • %h: Показать хэш фиксации.
  • %ae: Показать электронную почту автора.
  • %cr: Показать дату коммиттера.
  • %d: Показать, какой коммит является главой локального и origin.
  • %s: Показать тему сообщения коммита.

Второй тип псевдонима журнала git

➜ git config --global alias.lg log --all --graph --decorate --oneline --abbrev-commit
Войти в полноэкранный режим Выйти из полноэкранного режима

Вывод будет выглядеть примерно так:

➜ git lg
* 895e76a (HEAD -> main) third file
* 86deb1b second commit
* d8fb730 first commit
Войти в полноэкранный режим Выйти из полноэкранного режима

Это не мой любимый псевдоним git log, но это очень хороший пример псевдонима, потому что раньше мне нужно было писать полную команду, а теперь достаточно написать git lg.

Объяснение некоторых псевдонимов git, которые у меня есть

Shell-скрипт в псевдониме git

Когда псевдоним git начинается с символа ! это означает, что следующей командой будет Bash или Shell. С ее помощью можно создавать функции и использовать такие операторы, как && и ||.

staging = !git fetch && git checkout origin/staging
main = !git fetch && git checkout origin/main
Вход в полноэкранный режим Выход из полноэкранного режима

Там, где я работаю, мы используем staging и main в качестве центральных филиалов, поэтому каждый раз, когда мне нужно начать работать над чем-то новым, мне нужно выйти из того или иного филиала, и эта команда помогает мне сделать это быстро.

amend = !git add -A && git commit -a --amend --no-edit
Войти в полноэкранный режим Выйти из полноэкранного режима

Эта команда заслуживает внимания, потому что она является одной из самых используемых для меня. Чаще всего я вношу некоторые изменения и думаю, что все на месте, но вдруг обнаруживаю, что забыл console.log, комментарии и так далее.

В основном он делает то, что добавляет все изменения к последнему коммиту без изменения сообщения о коммите.

rename = !git add -A && git commit -a --amend
save = !git add -A && git commit -m 'SAVEPOINT'
Вход в полноэкранный режим Выйти из полноэкранного режима

Переименование и сохранение работают вместе для меня, дело в том, что когда у вас есть изменения, они на самом деле не сохранены, и когда вы фиксируете эти изменения, они теперь находятся в более безопасном месте. При работе я использую сохранение для хранения информации, когда собираюсь уйти на некоторое время или прекратить работу, но я всегда возвращаюсь и переименовываю последний коммит, потому что вы никогда не должны отправлять сообщение о коммите ‘SAVEPOINT’.

Если у меня несколько сохранений, я просто делаю git rebase -i HEAD~N и удаляю коммиты ‘SAVE POINTS’.

restore = reset HEAD~1 --mixed
Вход в полноэкранный режим Выход из полноэкранного режима

Восстановление просто снимет фиксацию изменений, но не отменит их.

wipe = !git add -A && git commit -qm 'WIPE SAVEPOINT' && git reset HEAD~1 --hard
Вход в полноэкранный режим Выход из полноэкранного режима

Wipe я использую не часто, но он очень полезен. Wipe добавит всё в коммит с сообщением ‘WIPE SAVEPOINT’, а затем вернётся к коммиту перед стиранием.

Если вы запустите git ll, вы не увидите коммит:

895e76a example@example.com 38 minutes ago (HEAD -> main) third file
86deb1b example@example.com 39 minutes ago second commit
d8fb730 example@example.com 39 minutes ago first commit
Вход в полноэкранный режим Выйти из полноэкранного режима

Тогда, если его нет, где я могу его найти? Вы можете найти, набрав git log — reflog.

➜ git log --reflog
commit 06dae1107b534d48d0002e40ccd0a1cf8ac45c6f
Author: Marco Antonio Bet <example@example.com>
Date:   Wed Jan 12 15:58:57 2022 -0300
    WIPE SAVEPOINT
commit 895e76a4e71ecc4cc65de27e4429ffce165cccff (HEAD -> main)
Author: Marco Antonio Bet <example@example.com>
Date:   Fri Jan 7 15:52:36 2022 -0300
    third file
commit 86deb1bb03edabb56e4cb5d84289fe7ab3025607
Author: Marco Antonio Bet <example@example.com>
Date:   Fri Jan 7 15:52:10 2022 -0300
    second commit
commit d8fb730fe75482bdcc4cfd923ffdbdec95953a5a
Author: Marco Antonio Bet <example@example.com>
Date:   Fri Jan 7 15:52:02 2022 -0300
    first commit
Войти в полноэкранный режим Выйти из полноэкранного режима

И посмотреть содержимое коммита:

➜ git checkout 06dae1107b534d48d0002e40ccd0a1cf8ac45c6f
Войти в полноэкранный режим Выйти из полноэкранного режима

И чтобы добавить содержимое коммита в вашу рабочую ветку:

➜ git cherry-pick 06dae1107b534d48d0002e40ccd0a1cf8ac45c6f
Войдите в полноэкранный режим Выйти из полноэкранного режима

Как вы видите, git alias очень полезен для сокращения и создания новых команд, приведенные выше команды — это псевдонимы, которые я использую лично, но это не должно помешать вам улучшить или создать свои собственные git aliases.

Надеюсь, я помог вам более продуктивно работать с git alias и лучше понять, что это такое, как его использовать и редактировать.

Спасибо вам большое, и я с нетерпением жду встречи с вами 😉.

Если вам понравилась эта статья, вы можете поставить ❤️, и 🔖 на потом в кнопке сохранить.

И если вам нравится контент о Git, Linux, советы по продуктивности, Typescript и Python, пожалуйста, следуйте за мной Marco Antonio Bet


Все команды:


[alias]
ss = !git status -sb
ll = !git log --pretty=format:'%C(blue)%h %C(cyan)%ae %C(green)%cr%C(red)%d %C(white)%s'
lg = log --all --graph --decorate --oneline --abbrev-commit
ac = !git add -A && git commit -m
ck = checkout
ckb = checkout -b
staging = !git fetch && git checkout origin/staging
main = !git fetch && git checkout origin/main
amend = !git add -A && git commit -a --amend --no-edit
rename = !git add -A && git commit -a --amend
save = !git add -A && git commit -m 'SAVEPOINT'
restore = reset HEAD~1 --mixed
wipe = !git add -A && git commit -qm 'WIPE SAVEPOINT' && git reset HEAD~1 --hard
Войти в полноэкранный режим Выйти из полноэкранного режима

Github с полным .gitconfig: https://gist.github.com/itsbetma/a350dca5eb20e07e4b90d7372b64da45.

Чтобы узнать больше:

  • https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases
  • https://git-scm.com/docs/git-status
  • https://git-scm.com/docs/pretty-formats
  • https://git-scm.com/docs/git-log

Оцените статью
devanswers.ru
Добавить комментарий