Как разработчику вам наверняка приходится ежедневно использовать Git. Базовым Git-командам посвящено уже много статей. В этой же статье речь пойдёт о git-командах для продвинутых: если вы будете их использовать, то легко сойдёте за настоящего эксперта по Git. Кроме того, они помогут вам повысить свою продуктивность и, может быть, даже произвести впечатление на коллег. Поэтому, даже если вы уверенно владеете навыками использования Git-команд, всё равно эта статья может быть для вас полезной.
git checkout —
Если вы часто переключаетесь между разными ветками, вам то и дело приходится писать git checkout branch-1
и git checkout branch-2
. Зная, как разработчики ненавидят повторения, предлагаю использовать git checkout -
.
То есть при переходе на предыдущую ветку надо просто написать git checkout -
. И когда надо будет переключиться на другую ветку (необязательно предыдущую), нужно только написать git checkout -
. Очень удобно, не правда ли?
git add -p
Скорее всего, вы уже использовали раньше команду git add .
. Эта команда означает, что вы сразу же добавляете каждый изменённый файл в коммит. Но что, если вы захотите конкретизировать, что именно нужно закоммитить? Или захотите пройти одно за другим все сделанные вами изменения, прежде чем их коммитить?
Для этого есть git add -p
. Это -p
означает «patch». С помощью команды git add -p
вы добавляете не все изменения сразу, а небольшие «патчи» (корректировки). И можете решить, хотите ли добавить их в коммит или нет: Git по каждому патчу будет у вас об этом спрашивать. В случае положительного ответа вводите y
, отрицательного — n
.
git bisect
Поиск последнего рабочего коммита может быть утомительным, если вам приходится при этом проверять каждый коммит. С помощью git bisect
найти его будет легко: здесь используется, по сути, бинарный поиск.
Для этого необходимо активировать git bisect
командой git bisect start
. После этого найдём коммит, который работает корректно: вводим git bisect good
. Затем найдём коммит, который больше не работает (обычно это последний коммит): вводим git bisect bad
.
Когда вы вводите git bisect bad
, Git проверяет старый коммит, который находится в середине истории коммитов между первым хорошим и последним плохим, пока не найдёт первый плохой коммит.
git commit — amend
Бывает так, что иногда приходится менять описание коммита, которое вы уже добавили, или забыли добавить небольшой коммит, который настолько связан с последним коммитом, что создавать отдельный коммит не хочется. В этом случае можно использовать git commit --amend
.
С помощью git commit --amend
вы можете либо изменить описание последнего коммита, либо внести дополнительное изменение в последний коммит. Однако в обоих случаях придется использовать git push -f
, если вы хотите добавить свои изменения.
git rebase -i HEAD~n
git commit --amend
позволяет изменить описание последнего коммита. А что, если вам нужно изменить описание коммита, сделанного задолго до последнего? Здесь на помощь приходит git rebase -i HEAD~n
. Этой командой вы возвращаетесь к n
-му коммиту и вносите в нём изменения, вводя edit
.
Затем нужно сохранить изменения. Для этого есть команда git push -f
. Она перезаписывает изменения.
Хотелось бы добавить, что команду git push -f
использовать можно не всегда. Применение git push -f
может привести к несогласованным действиям по отношению к коду нескольких человек, работающих с одной и той же кодовой базой. Но приведённые выше примеры остаются в силе, пока вы работаете над собственной ветвью функции в качестве единственного автора. Несогласованных действий не возникнет, если вы работаете над ветвью функций в одиночку, т. е. когда единственный участник — это вы. Даже если вы объедините свою ветвь функций с главной ветвью.
Читайте также:
- Развертывание Gatsby-сайта с помощью GitHub Actions
- 10 популярных проектов GitHub, написанных на Python
- GitHub Codespaces: быстрая разработка на ходу с Flutter
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Pandaquests: Using Git commands that will make you look like a senior developer