Секреты Git: 7 команд, о которых вы, возможно, не знаете

0
1856
views

Перевод статьи «Git Secrets: 7 Commands You Might Not Know».

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

В этом коротком посте я бы хотел показать семь маленьких команд, которые могут помочь вам стать более продуктивными в использовании Git.

Поиск изменений в файле

Быть в курсе всех дел может быть сложно, особенно если над одной кодовой базой работает много людей.

Чтобы разобраться, как именно (а также — когда и кем) был изменен файл, можно воспользоваться старой доброй командой git log с небольшим дополнением:

$ git log --since="3 weeks" -p index.html

Использование флага -p дает возможность увидеть собственно изменения как diff-ы (а не только метаданные коммита). Опция --since помогает сузить временные рамки.

Эффектная отмена последнего коммита

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

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

Для этого можно использовать команду git reset с особым набором опций:

$ git reset --mixed HEAD~1

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

HEAD~1 это отличный шорткат, указывающий, что HEAD должен быть переключен на «коммит перед самым последним».

Если хотите узнать больше об отмене изменений, почитать можно здесь.

Определяем, чем отличается файл в другой ветке

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

  • вы в настоящее время находитесь в ветке «feature/login» и…
  • хотите понять, чем файл «myFile.txt» в этой ветке…
  • отличается от версии этого же файла в ветке «develop».

Разницу можно посмотреть при помощи команды git diff с нужными параметрами:

$ git diff develop -- myFile.txt

В выводе вы увидите красивый понятный diff, показывающий, чем именно отличается ваш файл от версии этого же файла в другой ветке.

Использование switch вместо checkout

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

$ git switch develop

Как видите, использование команды довольно простое и похожее на применение git checkout. Но switch имеет огромное преимущество в сравнении с checkout: у него нет миллиона других значений и действий.

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

Photo by form PxHere

Переключение туда-сюда между двумя ветками

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

$ git switch -

Когда в качестве единственного параметра использован дефис, git switch переключает вас в предыдущую активную ветку. Это очень удобно, когда вам нужно постоянно переключаться между двумя ветками.

Использование git restore для отмены локальных изменений

До недавнего времени, чтобы отменить локальные изменения, вам приходилось использовать git checkout или git reset в той или иной форме.

Но теперь у нас есть относительно новая команда git restore, предназначенная именно для этой цели. Такая «узкая специализация» отличает ее от checkout и reset, имеющих множество других вариантов использования.

Вот быстрый обзор самых важных вещей, которые можно делать при помощи git restore:

#Вернуть файл из стейджинга, но оставить изменения в нем неприкосновенными.
$ git restore --staged myFile.txt

#Отменить локальные изменения в конкретном файле
$ git restore myFile.txt
#Отменить все локальные изменения в рабочей копии (будьте осторожны!)

$ git restore .

Восстановление произвольной версии файла из истории

Команда git restore предлагает еще одну очень полезную опцию: --source. С ее помощью можно легко восстановить любую предыдущую версию отдельного файла:

$ git restore --source 6bcf266b index.html

Вы просто указываете хэш версии, которую хотите восстановить (и имя файла, конечно).

Если вам нужна помощь в поиске подходящей версии, можете воспользоваться десктопным клиентом Git, например, Tower. Функционал «File History» позволит вам легко просмотреть только изменения, произошедшие в определенном файле, а затем выбрать нужный вариант для восстановления.

Открывайте для себя всю мощь Git

Хотя в наше время Git хорошо всем знаком, большинство людей не углубляются в его изучение и не используют имеющийся функционал по максимуму. Да, вы вполне можете «выжить», зная лишь несколько простых команд вроде commit, push и pull. Но это примерно как водить Ferrari, пользуясь только первой передачей!

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here