7 приемов работы с Git, изменивших мою жизнь

Перевод статьи «7 Git tricks that changed my life».

Эти полезные советы изменят вашу работу с самой популярной системой контроля версий.

Git — одна из самых распространенных систем контроля версий, она используется при разработке и в приватных системах, и на публичных сайтах. И насколько бы опытным пользователем вы ни были, в этой системе всегда остается что-то, что можно изучить и начать применять в работе. В этой статье я расскажу о семи приемах, которые изменили мою работу с Git.

1. Автоматическое исправление опечаток

Все мы временами допускаем опечатки. Но если вы включите в Git функцию автоисправления, система будет автоматически корректировать неправильно введенные подкоманды.

Скажем, вы хотели посмотреть статус своего репозитория при помощи команды git status, но по ошибке ввели git stats. В обычных условиях Git скажет вам, что «stats» — неправильная команда:

$ git stats
git: ‘stats’ is not a git command. See ‘git --help’.
The most similar command is status

Чтобы избежать подобных сценариев, включите автоисправление в конфигурации Git:

$ git config --global help.autocorrect 1

Если хотите включить автоисправление только для текущего репозитория, не используйте опцию --global.

Эта команда включает функцию автоисправления. Более подробное руководство доступно в GitDocs, но если вы теперь попробуете запустить ту команду с опечаткой, вы сразу поймете, что поменялось:

$ git stats
git: ‘stats’ is not a git command. See ‘git --help’.
On branch master
Your branch is up to date with ‘origin/master’. nothing to commit, working tree clean

Вместо того чтобы предлагать альтернативную подкоманду, Git теперь просто сам запускает наиболее подходящий вариант, в нашем случае — git status.

2. Подсчет коммитов

Есть много причин, по которым вы можете захотеть подсчитать свои коммиты. Многие разработчики считают их, чтобы определить, когда пора инкрементировать номер сборки, или просто чтобы почувствовать, что проект продвигается вперед.

Посчитать коммиты довольно легко, для этого есть специальная команда:

$ git rev-list --count branch-name

В конце команды идет имя ветки (в текущем репозитории), в которой вы хотите посчитать коммиты.

$ git rev-list --count master
32
$ git rev-list --count dev
34

3. Оптимизация репозитория

Ваш репозиторий представляет ценность не только для вас, но и для вашей организации. Несколько простых практик помогут вам поддерживать в нем чистоту и порядок. Один из лучших подходов в этом деле — использование файла .gitignore. При помощи этого файла вы можете сказать Git не сохранять многие нежелательные файлы (бинарные, временные и т. д.).

Чтобы еще лучше оптимизировать репозиторий, можно использовать сборку мусора в Git.

$ git gc --prune=now --aggressive

Эта команда вам особенно пригодится, если вы с вашей командой интенсивно используете команды pull или push. По сути это внутренняя утилита, подчищающая недоступные или «осиротевшие» объекты Git в вашем репозитории.

4. Бэкапы неотслеживаемых файлов

Чаще всего неотслеживаемые файлы можно смело удалять. Но довольно часто бывают ситуации, когда вы хотите их удалить, но вместе с тем сделать бэкап на случай, если позже эти файлы вам все же понадобятся. Git вместе с конвейером команд Bash позволяет легко создать zip-архив из неотслеживаемых файлов.

$ git ls-files --others --exclude-standard -z |\
xargs -0 tar rvf ~/backup-untracked.zip

Эта команда создает архив под именем backup-untracked.zip (и включает в него файлы, перечисленные в .gitignore).

5. Познакомьтесь с вашей папкой .git

Директория .git есть в каждом репозитории. Это специальная скрытая папка.

$ ls -a
. … .git

Эта папка хранит все ссылки и другие полезные детали вроде настроек, данных репозитория, состояния HEAD, логов и т. п.

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

В целом, в папке .git ничего особого делать не надо. Она управляется самим Git и считается как бы запретной. Тем не менее, в этой директории есть некоторые интересные артефакты, включая текущее состояние HEAD:

$ cat .git/HEAD
ref: refs/heads/master

Там также может содержаться описание вашего репозитория:

$ cat .git/description
This is an unnamed repository; edit this file ‘description’ to name the repository.

6. Просмотр файла в другой ветке

Иногда бывает необходимо просмотреть содержимое файла в другой ветке. Это можно сделать, не покидая текущую ветку, при помощи простой Git-команды.

Предположим, у вас есть файл README.md в основной ветке (main). Вы работаете в ветке под именем dev. При помощи следующей команды вы сможете просмотреть содержимое файла README.md в вашем терминале:

$ git show main:README.md

7. Поиск в Git

При помощи специальной команды вы сможете вести поиск в Git по-настоящему профессионально. Более того, вы сможете искать нужные изменения, даже если не уверены, в каком именно коммите или даже ветке они находятся.

$ git rev-list --all | xargs git grep -F ‘’

Например, предположим, что вы хотите найти строку «font-size: 52 px;» в вашем репозитории:

$ git rev-list –all | xargs git grep -F ‘font-size: 52 px;’
F3022…9e12:HtmlTemplate/style.css: font-size: 52 px;
E9211…8244:RR.Web/Content/style/style.css: font-size: 52 px;

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх