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

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

1. Журнал

Журнал - это, пожалуй, самый полезный инструмент в вашем арсенале системы контроля версий. Вот некоторые из моих любимых применений инструмента журнала.

Просто коммиты в этой ветке

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

Следующая команда покажет вам, какие коммиты находятся в вашей текущей ветке, но не в главной.

git log master..

Обратите внимание: вы можете заменить master на любую понравившуюся ветку.

Время жизни блока кода

Иногда мне нужно знать, когда был добавлен или удален конкретный блок кода (наиболее полезный для класса или структуры).

git log -S "class User" --reverse

Согласно документации, флаг -S будет

Ищите различия, которые изменяют количество вхождений указанной строки (то есть добавления / удаления) в файл.

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

2. Разница

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

Сравнить два файла

Обычно вы просто хотите увидеть, как какой-то файл изменился между двумя коммитами. Например, чтобы увидеть, как user.rb изменился между HEAD и HEAD~1:

git diff HEAD~1 HEAD app/models/user.rb

Если имя файла изменилось, но вам все равно нужно увидеть разницу:

git diff HEAD~1:app/models/user.rb HEAD:app/models/new_user.rb

Если вы хотите увидеть, что изменилось в файле с момента определенной ветки (в данном случае master), вы можете снова использовать синтаксис branch..:

git diff master..HEAD app/models/user.rb

Может быть, вы хотите увидеть разницу user.rb между двумя произвольными ветвями:

git diff fooBranch:app/models/user.rb barBranch:app/models/user.rb

Различия с подстановочными знаками

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

git diff HEAD~1 HEAD *.html.erb
git diff HEAD~1 HEAD app/*

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