Контроль версий — необходимое зло разработки программного обеспечения.
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. Набор функций весьма полезен для добавления в ваш арсенал разработки программного обеспечения!