Контроль версий — необходимое зло разработки программного обеспечения.

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

Это самые полезные команды Git, которые хорошо служили мне на протяжении многих лет и будут служить в будущем!

1 — Тайник и поп

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

Выполните следующие действия, чтобы сохранить рабочую копию в рабочем пространстве:

git stash 

Когда вы захотите вернуться (после производственного исправления), вы можете использовать следующее, чтобы повторно применить ваши изменения:

git stash pop

2 — Изменить

Иногда после внесения изменений вы понимаете, что допустили орфографическую ошибку или пропустили что-то важное. Вместо фиксации кода как есть вы можете повторно зафиксировать свои изменения с обновленным сообщением:

git commit --amend "your new message"

3 — Дистанционный

Функция Git remote очень полезна, поскольку она сообщает вам, на какой удаленный репозиторий вы указываете. Есть 4 важные функции remote, которые вам нужно знать наизусть.

Первая функция remote сообщает вам, на какой удаленный репозиторий (и назначенный ему псевдоним) вы сейчас указываете:

git remote -v

Другие три функции remote позволяют управлять псевдонимом удаленного репозитория, начиная с добавления нового псевдонима.

git remote add <Repo URL>

Чтобы переименовать псевдоним:

git remote rename <alias> <new alias>

Чтобы удалить псевдоним:

git remote remove <alias>

4 — Слияние

Функция Git merge очень удобна, когда вы хотите проверить, может ли одна ветвь объединиться с другой локально. Или, если вы работали над двумя ветками функций и хотели объединить их в одну ветку, это тоже сработает!

Чтобы объединиться из одной локальной ветки в другую, убедитесь, что вы зарегистрированы в той ветке, с которой хотите объединиться. Например, если у вас есть две ветки, feature1 и feature2, и вы хотите объединить feature2 в feature1, выполните следующие действия. :

git checkout feature1
git merge feature2

Примечание. Если вы хотите объединить feature1 с feature2, выполните те же команды с перевернутыми именами ветвей.

5 — Перебазировать

Git rebase немного более продвинут. Короче говоря, вы можете взять всю историю из одной ветки и расширить в другую ветку.

Представьте, что каждому коммиту присваивается номер в порядке его совершения. Следующие две непересекающиеся ветви будут выглядеть следующим образом:

1 - 3 - 5 - 7  Main 
 \
  2 - 4 - 6  Feature

Если бы мы хотели, чтобы в нашей истории коммитов все коммиты в Feature шли после Main, мы бы выполнили следующее:

git rebase main Feature

Теперь история будет выглядеть следующим образом:

1 - 3 - 5 - 7 - 2 - 4 - 6  Main 

В некотором смысле это очень похоже на Git merge.

6 — Очистка местного филиала

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

Выполните следующее, чтобы очистить локальную ветку, которая была объединена:

git branch -d <branch> 

Если по какой-либо причине вам нужно принудительно удалить, выполните следующую команду:

git remote -D <branch>

7 — Отменить изменения

Если вы работаете над функцией и по какой-то причине попали в кроличью нору, потому что гонялись за белым кроликом… когда вы должны были гоняться за конкретными требованиями, вы можете запустить следующую команду, чтобы удалить все ваши локальные изменения:

git clean -fxd

8 — Дифф.

Если вы работали над функцией в течение достаточно долгого времени и хотели сравнить все изменения из вашей текущей ветки с другой веткой; Разработка например. Вы можете запустить любую из следующих команд:

git diff <develop>
git diff <develop> <feature>
git diff <develop>...<feature>

Чтобы увидеть, какие файлы содержат различия между двумя ветвями, вставьте --name-only следующим образом:

git diff --name-only <develop> <feature>

9 — Черри-выбор

Команда Git cherry-pick очень эффективна, поскольку позволяет выбрать фиксацию из одной ветки и объединить ее с другой веткой.

Взгляните на следующий пример:

1 - 3 - 5 - 7  Main 
 \
  2 - 4 - 6  Feature

Допустим, вы хотите объединить коммит 4 из ветки Feature в ветку Main. Выполните следующие команды:

git checkout Main
git cherry-pick 4 // 4 is the commit reference

Результат будет выглядеть так:

1 - 3 - 5 - 7 - 4  Main 
 \
  2 - 4 - 6  Feature

По сути, вы выбираете вишни, какой коммит вы хотите объединить с другой веткой.

10 — Журналы

Не стоит недооценивать силу журналов. Используйте это в своих интересах.

Чтобы просмотреть историю всех коммитов, ведущих к текущей ветке, выполните следующее:

git log

Список коммитов может быть довольно длинным, поэтому, чтобы ограничить количество возвращаемой истории, вы можете присвоить ему число, подобное этому:

git log -n 5  // returns the last 5 commits

Но если вы хотите добавить некоторые фильтры, вы можете сделать следующее:

git log --author="John Smith"
git log --committer="John Smith"

Или по дате:

git log --after="2022-09-01"
git log --before="yesterday"

И по файлу:

git log -- index.js

С Git вы можете использовать гораздо больше log!

Спасибо за прочтение! Надеюсь, вы узнали кое-что о Git. Набор функций весьма полезен для добавления в ваш арсенал разработки программного обеспечения!