Git

Автозаполнение команд Git в терминале

Большинство команд терминала для Git начинаются с ключевого слова git, за которым следует пробел и второе ключевое слово. Из-за наличия пробела между этими командами терминал обрабатывает их как разные слова, в результате чего автозаполнение через клавишу Tab не работает по умолчанию.

Git предоставляет сценарий автозаполнения, который нужно скачать для использования этой функции. Запустите следующую команду для скачивания сценария в домашнюю директорию:

cd ~
curl https://github.com/git/git/blob/master/contrib/completion/git-completion.bash

Затем добавьте следующие строки в файл .bash_profile, расположенный в домашней директории:

if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi

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

Локальное удаление ветки в удаленном репозитории

С помощью команды push можно быстро удалить ветку в удаленном репозитории из локальной системы. Предположим, что у вас уже есть доступ к удаленному репозиторию.

Вам нужно будет запустить следующую команду для удаления ветки branch_name из удаленного репозитория remote_name. Действовать надо крайне осторожно, поскольку этот шаг невозможно отменить.

git push remote_name :branch_name

Запуск команды помещает пустую ветку в branch_name, полностью удаляя branch_name из remote_name.

Force Push без рисков

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

Более безопасный вариант выполнения force push — это использование опции --force-with-lease. Она работает тем же образом, если никто не отправлял обновления с момента последнего получения данных с удаленного репозитория. Однако во всех остальных случаях push будет отклонен. Отклоненный push укажет на необходимость обновления локальной ветки с обновленным удаленным репозиторием до следующей попытки отправки изменений.

Отмена изменений в Git

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

Чтобы отменить процесс отслеживания файла с Git, запустите следующую команду:

git rm --cached added_file

Для отмены внесения изменений в файл с момента последнего коммита выполните следующее:

git reset HEAD staged_file

Эта команда восстанавливает статус файла staged_file к HEAD, который указывает на последний коммит. Однако, если вы также выполнили коммит изменений, есть еще один способ вернуться к этапу до коммита.

git reset --soft HEAD~N

Эта команда отменяет статус репозитория до N коммитов перед HEAD и не приводит к изменениям в файлах.

Сохранение незафиксированных изменений с помощью stash

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

На помощь приходят Git stash. Следующая команда сохраняет все незафиксированные изменения и возвращается к состоянию репозитория при последнем коммите.

git stash

Чтобы возобновить работу над этой функцией, используйте следующую команду для проверки всех stashes:

git stash list

Эта команда показывает список всех сохраненных stash с отметками времени. Применить N-й stash из списка stash можно с помощью следующей команды:

git stash apply [email protected]{N}

Выборочная фиксация изменений из файла

Можно ли сделать так, чтобы несколько изменений в одном файле появились в разных коммитах? Традиционная команда git add помещает все изменения в файл, поэтому добавьте опцию -p, чтобы запустить Мастера, с помощью которого можно выборочно вносить изменения в файл.

git add -p

Обработка больших файлов с помощью Git LFS

Git хорошо справляется с текстовыми файлами, однако не способен эффективно обрабатывать двоичные файлы. Документы Excel, проекты Photoshop и другие исполняемые файлы — примеры таких двоичных файлов.

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

После загрузки и установки в локальной системе инициализируйте Git LFS для каждого репозитория с помощью следующей команды:

git lfs install

Чтобы отследить один тип расширения файла (например, PSD), выполните следующую команду:

git lfs track "*.psd"

Более того, можно отслеживать и другие файлы, редактируя файл .gitattributes.

Бонусный совет: отладка с помощью Git

Знаете ли вы, что Git — очень эффективный инструмент для устранения проблем в кодовой базе? Git Blame помогает тщательно проанализировать историю файла, а процесс Bisect инициирует бинарный поиск по коммитам.

Заключение

На этом наш список завершен. В этом руководстве мы рассмотрели семь советов (и даже бонусный!) по повышению эффективности рабочего процесса.

Читайте также:


Перевод статьи Shaumik Daityari: Become a Git Ninja: 7 Productivity Tips