Дополнительные советы и рекомендации, которые сэкономят ваше время и нервы.

Когда я начал свое путешествие по DevOps, я был в блаженном неведении о том, что меня ждет впереди. Тем не менее, после нескольких лет тесного сотрудничества с некоторыми очень талантливыми разработчиками, я начинаю добиваться успеха. Невероятно, как многому можно научиться, сидя рядом со старшим разработчиком, который уделяет вам время и всегда был рядом. Изо дня в день, используязнания от эксперта в этой области, вы узнаете то, чего не найдете ни на одном онлайн-курсе или в университете.

Хотя да, курсы, учебные пособия и обучение научат вас основным понятиям. Сегодня я хочу погрузиться немного глубже и показать некоторые полезные советы и приемы, которые я набрал за эти годы. Используя эти расширенные команды git, мы можем не только экономить драгоценные часы каждую неделю; но получить более глубокое понимание инструмента.

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

1. Поиск в Git

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

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

Например, предположим, что вы хотите найти строку «clapfor=joelbelton;» в вашем репозитории:

$ git rev-list –all | xargs git grep -F ‘clapfor=joelbelton;’
C2011:bestdev.py: clapfor=joelbelton;
B9831:devops_technical_writter.json: clapfor=joelbelton;

2. Очистите свои локальные ветки

Мы можем удалить локальные ветки, которые уже были удалены из наших удаленных репозиториев.

git config --global fetch.prune true

Мы также можем удалить любые локальные ветки, которые были объединены с нашим примером:

git branch --merged master | grep -v "master" | xargs -n 1 git branch -d

3. Считайте коммиты

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

Ниже показано, как мы можем подсчитать эти коммиты:

$ git rev-list –count master
18
$ git rev-list –count feature
2

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

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

Например, если у вас есть файл 'newfeature.py' в нашей ветке master, но мы работаем над веткой dev, в которой отстал. Мы можем просмотреть этот новый файл, используя следующую команду:

$ git show master:newfeature.py

5. Пустые коммиты

Если вы работаете с конвейерами DevOps и CI/CD, скорее всего, у вас может быть автоматическая интеграция с коммитами git. Вместо того, чтобы вносить небольшие изменения в документацию, мы можем просто использовать пустой коммит.

$ git commit --allow empty -m 'new empty commit'

Это запустит наши рабочие процессы без необходимости вносить тривиальные изменения в наш код.

6. Автоматическое исправление орфографических ошибок

Все совершают ошибки, и каждый видел, как это сообщение всплывает на их терминале…

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

Вы можете не знать, но Git на самом деле предоставляет конфигурацию для автоматического автоматического исправления ваших команд. Добавление глобального тега означает, что он применяется конкретно к вашему пользователю.

$ git config --global help.autocorrect 1

7. Автоматически обрезать

Git Prune — это служебная команда, которая убирает осиротевшие объекты git, к которым нельзя получить доступ по какой-либо ссылке. Любой коммит, к которому нельзя получить доступ через теги или ветки, определяется как недостижимый. Git prune — это команда git, которая удалит все эти объекты.

Конечно, может быть довольно сложно понять, когда вам нужно обрезать удаленные объекты, поскольку наш репозиторий не предупредит нас об этом. К счастью, включив эту конфигурацию git, мы можем попросить git выполнять обрезку при каждом git fetch и git pull.

git config --global fetch.prune true

8. Сделайте резервную копию неотслеживаемых файлов

Я не уверен насчет вас, но я всегда волнуюсь, когда меня просят удалить некоторые неотслеживаемые файлы. Хотя в большинстве случаев это совершенно безопасно, может быть полезно создать резервную копию этих файлов на тот случай, если они потребуются вам позже.

С помощью комбинации наших команд git и умной части xargs мы можем создать эту изящную маленькую функциональность, которая будет создавать резервные копии всех наших неотслеживаемых файлов вместе в ZIP-архив.

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

Спасибо за прочтение.

Я регулярно публикую статьи о DevOps. Если вы хотите узнать больше, я рекомендую ознакомиться со следующими историями:

Современная отладка — инструменты и советы, которые вам нужны, чтобы оставаться впереди

Самые важные команды Linux, которым вас никто не учит