[Перевод] 10 Git-команд, которые стоит знать разработчику

knhxo_gsylvsautle3fw_ao5g3o.png

В этой статье мы обсудим разные Git-команды, которые могут оказаться полезными для разработчика или специалиста по Big Data. Вы узнаете, как проверять, удалять и приводить код в порядок. А еще рассмотрим способы выхода из Vim и экономию времени с помощью псевдонимов Bash и конфигурации редактора Git.

Skillbox рекомендует: Практический курс «Мобильный разработчик PRO».

Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».


Проверяем все и вся


43ddd62398df0eaa87a1b7c01d8f1a38.png

  • git diff— Посмотреть все изменения файла локально. При указании имени файла изменения будут показаны только для него.
  • git log —  Просмотреть историю коммита. Может также использоваться для файла с git log -p my_file. Введите q, чтобы выйти.
  • git blame my_file — Просмотреть, кто, что и когда изменил в my_file.
  • git reflog —  Показать журнал изменений в заголовке локального репозитория. Отличный вариант для поиска утраченных данных.


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

Вернуть, как было


  • git reset, git checkout и git revert — команды, которые используются, чтобы отменить какие-либо действия. Но они не такие и простые, с ними надо уметь обращаться.
  • git reset, git checkout могут использоваться как для коммитов, так и для обычных файлов.
  • git revert используется только для работы с коммитами.


Если вы работаете с собственными локальными коммитами, которые никак не связаны с командной работой, можно без проблем использовать все перечисленные команды.

Если вы работаете в коллективе и коммиты общие, тогда ваш выбор — git revert.

7399d674e932df1b2a4f980b2a8bbe75.png

У каждой команды есть целый набор опций. Вот наиболее употребляемые:
git reset --hard HEAD — отмена проиндексированных и непроиндексированных изменений с момента последнего коммита.

Указываем вместо HEAD определенный коммит, чтобы отменить изменения, произошедшие после него. --hard отбрасываются оба типа изменений, о которых говорилось выше.

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

git checkout my_commit — отмена изменений my_commit.

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

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

Если вы используете checkout с веткой вместо коммита, HEAD переключается на указанную ветвь, а рабочий каталог обновляется для соответствия изменениям. Это самое распространенное использование этой команды.

git revert my_commit — отмена последствий изменений в my_commit. revert выполняет новый коммит после отмены изменений.

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

94e9e3edd847cc3de7d4f4fc52faecb8.jpg

Иногда вы просто хотите удалить неотслеживаемые файлы в вашем локальном каталоге. К примеру, запустив какой-то код, который создал много разных типов файлов, которые вам не нужны. К сожалению. Clean поможет мгновенно удалить их!

git clean -n — удаление неотслеживаемых файлов в локальной рабочей директории.

-n — флаг для пробного запуска, ничего не удаляется.
-f — флаг для удаления файлов.
-в — флаг для удаления неотслеживаемых директорий.

По умолчанию неотслеживаемые файлы .gitignore не будут удалены, но это можно изменить.

8588cd48d97be20658f2ec61193aa5f9.jpg

Наводим порядки


git commit --amend — добавляем поэтапные изменения в последний коммит.

Если ничего не проиндексировано, команда позволяет вам редактировать последнее сообщение коммита. Используйте команду только в том случае, если коммит не был объединен с удаленной master-веткой.

git push my_remote --tags — отправка локальных тэгов в удаленный репозиторий. Хороший вариант для присвоения версий изменениям.

Помогите, я застрял в Vim и не могу выбраться!


Git в некоторых случаях открывает сессию редактора Vim. И если вы не слишком хорошо знакомы с ним, то можете оказаться в затруднительной ситуации. Да и не только вы — к примеру, на Stack Overflow более 4 тысяч пользователей хотят знать, как выбраться из Vim.

8b2b70c509540309f28ea31ad4057f10.jpg

Вот четырехэтапный план, который поможет закрыть Vim и сохранить изменения:

  • Нажимаем i.
  • Вводим сообщение коммита в первой строке.
  • Esc.
  • Вводим : x.


Все, вы свободны!

Изменяем редактор по умолчанию.

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

git config --global core.editor «atom --wait»

Ярлыки для команд Git


А вот способ, который позволяет добавлять ярлыки для Git-команд, для вашего .bash_profile.

alias gs='git status '
alias ga='git add '
alias gaa='git add -A '
alias gb='git branch '
alias gc='git commit '
alias gcm='git commit -m '
alias go='git checkout '

Больше информации о .bash_profile можно получить здесь.

Что касается способа, приведенного выше, то теперь вы можете использовать gs вместо git status.

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

Skillbox рекомендует:

© Habrahabr.ru