7 способов использовать Git для повышения производительности

7 способов использовать Git для повышения производительности

9 января 2023 г.

Git — самая популярная система управления исходным кодом с невероятным уровнем принятия разработчиками 93,87% (согласно Опрос StackOverflow за 2022 год). Это действительно мощная система с множеством скрытых функций, неизвестных большинству из нас, разработчиков.

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

1 — Удалить удаленно удаленные ветки при выборке

Выдержка из документации Git:

<цитата>

Git по умолчанию хранит данные, если они явно не удаляются; это распространяется на хранение локальных ссылок на ветки на удаленных устройствах, которые сами удалили эти ветки.

Если их оставить для накопления, эти устаревшие ссылки могут ухудшить производительность в больших и загруженных репозиториях, которые имеют много оттока веток, и, например. сделать вывод таких команд, как git branch -a --contains излишне подробным, а также повлиять на все остальное, что будет работать с полным набором известных ссылок.

Чтобы удалить локальные ветки, не имеющие ссылок на удаленное отслеживание, при извлечении всех ветвей вместо использования параметра --all используйте параметр --prune:

```баш {linenos=false} git fetch --prune


[git fetch --prune Documentation](https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt---prune)

## 2 - Merge/Rebase without checking out the target branch

When making a merge or a rebase, it's common to see people do the following:


```bash
git checkout branch-to-merge-from
git pull
git checkout my-working-branch
git merge branch-to-merge-from

Ветки Git — это просто ссылки на коммит. Когда мы делаем выборку, удаленные ветки создаются локально с префиксом origin/, поэтому перед слиянием нет необходимости проверять branch-to-merge-from. .

<цитата>

ℹ️ Префикс удаленной ветки зависит от удаленного имени, но по умолчанию используется origin.

Следующее работает без извлечения и извлечения локальной ветки branch-to-merge-from:

git fetch --prune
git merge origin/branch-to-merge-from

Документация по git Remote Branch

3 — Запустите конвейер CI/CD с пустой фиксацией

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

git commit --allow-empty -m 'Empty commit'
git push

документация git commit --allow-empty

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

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

```баш {linenos=false} git показать main:src/Program.cs


As with other Git commands, we can pass any commit or reference, instead of the branch name:


```bash {linenos=false}
# Show the program.cs file in the previous commit
git show HEAD~1:src/Program.cs

документация git show

5 – Извлечь ранее использовавшуюся ветку

Чтобы вернуться к ранее проверенной ветке, просто передайте - в качестве параметра ветки:

git checkout develop
git checkout main
git checkout - #Checkout the develop branch

6 — Поиск в Git

Если вы хотите найти строку в своем репозитории, используйте команду git grep.

Чтобы найти строку во всех фиксациях, укажите список фиксаций в git grep с помощью команды git rev-list --all, как показано ниже:

# Search for the word "git" in all files of all commits
git rev-list --all | xargs git grep "git"

Output of the grep command

документация по git grep

7 — Отображение журнала коммитов в виде графика

Git может отображать журналы коммитов в виде графика в командной строке. Для этого используйте параметр --graph команды git log.

<цитата>

ℹ️ Передайте параметр --oneline, чтобы отобразить хэш фиксации и сообщение о фиксации в одной строке и упростить чтение графика.

```баш {linenos=false} git log --graph --oneline


 ![Graph of the repository](https://cdn.hackernoon.com/images/chDXuB6Q8sgQGp1TgJW4wl9ir0K2-0sa28x5.png)


Git can also show the commit history of a specific file:


```bash {linenos=false}
git log --graph --oneline systemcontext.md

Graph for a specific file

документация git log --graph


Также опубликовано здесь

Нравится этот пост? Следуй за мной:


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE