Команды Git, о которых вы еще не знаете.
Являетесь ли вы опытным пользователем Git или новичком, эта статья предоставит вам знания и инструменты, необходимые для того, чтобы поднять свои навыки работы с Git на новый уровень. Итак, давайте погрузимся и изучим некоторые из самых мощных и полезных расширенных команд Git!
git show
Команда используется для отображения информации о конкретной контрольной точке (коммите). Она выводит такие сведения, как хэш коммита, автора изменений, дата изменения. Вы также можете использовать эту команду для сравнения текущей версии коммита с предыдущей версией.
Допустим, вы хотите просмотреть подробную информацию о последнем коммите в вашем репозитории. Для этого вы можете использовать следующую команду:
git show HEAD
При этом будет отображена информация о последней контрольной точке, включая хэш, автора, дату и внесённые изменения.
Если вы хотите просмотреть конкретный коммит по его хэшу, вы можете использовать следующую команду:
git show <commit hash>
Если вы хотите просмотреть разницу между текущей и конкретной версией, вы можете использовать следующую команду:
git show <commit hash> -- <file name>
Вы также можете использовать параметр отображения изменений, внесённых в коммит:
git show -p <commit hash>
Чтобы показать статистику изменений контрольной точки, добавьте -stat
в команду:
git show -stat <commit hash>
git blame
Команда отображает последнего пользователя, который изменил каждую строку файла в репозитории Git, а также дату и хэш фиксации изменения. Это может быть полезно для определения того, кто несёт ответственность за конкретную строку кода, или для понимания того, когда и почему было внесено изменение.
Например, чтобы просмотреть информацию об ошибке для файла с именем main.js
, вы можете запустить следующую команду:
git blame main.js
Она покажет информацию об ответственном за каждую строку кода в файле с самым последним изменением внизу.
Результат будет выглядеть примерно так:
cb7f1d (John Doe 2022–01–01) 1 function main() {
cb7f1d (John Doe 2022–01–01) 2 console.log(“Hello, world!”);
cb7f1d (Jane Doe 2022–01–02) 3 };
Этот пример показывает, что John Doe – это тот, кто изменил строку 1 и строку 2 2022-01-01, а Jane Doe – это тот, кто изменил строку 3 2022-01-02.
Вы также можете использовать параметр -L
, чтобы указать диапазон строк, для которых будет отображаться информация об исправлениях. Например:
git blame -L 2,4 main.js
Эта строка покажет информацию о возможных исправлениях для строк 2, 3 и 4.
Ещё вы можете использовать опцию -C
, чтобы отобразить информацию об изменении для конкретного коммита, например:
git blame -C cb7f1d main.js
Это покажет информацию об ошибке для состояния файла, как это было в контрольной точке cb7f1d.
git archive
Команда позволит вам создать архивный файл (например, zip или tar-файл) определённого момента в истории репозитория Git. Архивный файл будет содержать все файлы в репозитории на указанный момент времени.
Например, чтобы создать архивный файл текущего состояния главной ветви, вы можете выполнить следующую команду:
git archive -o archive.zip master
Вы также можете указать хэш коммита вместо имени ветки, чтобы создать архив конкретной фиксации:
git archive -o archive.zip cb7f1d
Эта строка создаст zip-файл с именем “archive.zip ”, который содержит все файлы в репозитории в том состоянии, в котором они находились на момент совершения коммита с хэшем “cb7f1d”.
Вы также можете указать формат файла, например, чтобы создать tar-файл вместо zip-файла:
git archive -o archive.tar — format=tar master
Ещё можно указать префикс для файлов в архиве, например:
git archive -o archive.zip — prefix=myproject/ master
Строка создаст zip-файл с именем “archive.zip ”, который содержит все файлы в главной ветви в текущем состоянии, но файлы в архиве будут иметь префикс “myproject/”.
git mv
Это команда, которая позволяет вам переместить или переименовать файл, каталог или символическую ссылку, а также обновить репозиторий, чтобы отразить изменения.
Вот пример того, как вы могли бы использовать git mv
:
Допустим, у вас есть файл под названием oldfile.txt
в вашем репозитории, и вы хотите переименовать его в newfile.txt
. Для этого вы можете использовать следующую команду:
git mv oldfile.txt newfile.txt
Это позволит переименовать файл в вашем локальном репозитории, а также поэтапно внести изменения, чтобы их можно было зафиксировать.
Вы можете подтвердить изменение, запустив git status
, который покажет, что файл oldfile.txt
был переименован в newfile.txt
.
Если вы удовлетворены изменениями, вы можете зафиксировать их, запустив git commit -m "Renamed oldfile.txt to newfile.txt"
.
Наконец, вы можете отправить изменения в удалённый репозиторий с помощью команды git push
.
Пожалуйста, обратите внимание, что git mv
по сути эквивалентен запуску git rm
в исходном файле, а затем запуску git add
в новом файле.
Также важно отметить, что эта команда работает только в локальном репозитории. Если вам нужно переместить файлы в удаленный репозиторий, вам необходимо использовать такие команды, как git rm
и git add
отдельно.
git clean
Она используется для удаления неотслеживаемых файлов и каталогов из рабочего каталога репозитория Git. Это полезно для очистки файлов, которые не находятся под контролем версий и не должны быть частью репозитория.
Например, если у вас есть каталог с некоторыми файлами, которые не отслеживаются Git, и вы хотите их удалить, вы можете выполнить следующую команду:
git clean -f
Это приведёт к удалению всех неотслеживаемых файлов из рабочего каталога. Если вы также хотите удалить неотслеживаемые каталоги, вы можете использовать опцию -d
:
git clean -f -d
Это приведёт к удалению как неотслеживаемых файлов, так и каталогов из рабочего каталога.
Важно отметить, что git clean
– опасная команда, так как она удаляет файлы безвозвратно и восстановлению они не подлежат. Итак, рекомендуется сначала использовать параметр -n
, чтобы посмотреть, какие файлы будут удалены, прежде чем запускать команду без него.
git clean -n
Это покажет вам список файлов и каталогов, которые будут удалены, но не приведёт к их удалению.
git rm
Команда, используемая для удаления файлов из репозитория Git. Она может использоваться для удаления одного или нескольких файлов одновременно, а также для удаления отслеживаемых и неотслеживаемых файлов.
Например, если вы хотите удалить файл с именем example.txt
из вашего репозитория, а также удалить его из вашей локальной файловой системы, вы можете использовать команду:
git rm example.txt
Если вы хотите удалить файл, но сохранить его копию в своей локальной файловой системе, вы можете использовать опцию --cached
(кэшировать):
git rm --cached example.txt
Вы также можете использовать git rm
для удаления каталога с опцией -r
:
git rm -r myfolder
Важно отметить, что как только вы используете команду git rm
, файлы удаляются безвозвратно и не могут быть восстановлены.
git prune
Команда вводится для очистки любых устаревших или “зависших” ссылок в локальном репозитории. Сюда входят объекты, которые больше недоступны из какой-либо ветви или тега, а также ветви удалённого отслеживания, которые больше не существуют на удалённом компьютере.
Допустим, вы работали над веткой под названием feature1
, закончили работу над ней,объединили её в master
, а затем удалили. Однако ветвь всё ещё присутствует в вашем локальном репозитории и занимает много места. Чтобы удалить все устаревшие ссылки, вы можете выполнить следующую команду:
git prune
Она удалит все ссылки, которые больше не нужны, такие как ветвь feature1
, которую вы удалили.
Вы также можете использовать опцию -n
для выполнения сухого запуска команды, которая покажет вам, какие ссылки будут удалены, фактически не удаляя их.
git prune -n
Если вы удовлетворены результатами, вы можете запустить команду без опции -n, чтобы фактически удалить ссылки.
Важно отметить, что git prune
не удаляет ветви, которые всё ещё отслеживаются другими ветвями. Кроме того, рекомендуется время от времени запускать эту команду, чтобы поддерживать чистоту и эффективность вашего локального репозитория.
git shortlog
Она используется для суммирования коммитов в репозитории по авторам. Эта команда группирует коммиты по автору и отображает сводку количества коммитов, сгруппированных по имени автора.
Допустим, вы хотите просмотреть сводку коммитов в вашем репозитории, сгруппированных по авторам. Для этого вы можете использовать следующую команду:
git shortlog
При этом отобразится список авторов и количество совершённых ими коммитов в порядке убывания количества коммитов.
Вы также можете использовать параметр -n
для сортировки выходных данных по количеству фиксаций:
git shortlog -n
Ещё вы можете использовать опцию -e
, чтобы включить адрес электронной почты автора в выходные данные:
git shortlog -e
Вы можете использовать параметр -s
для отображения количества фиксаций в сводном формате:
git shortlog -s
Вы также можете использовать параметр -w для определения ширины столбца выходных данных
git shortlog -w <column width>
git verify-commit
Команда проверяет подпись GPG фиксации. GPG (GNU Privacy Guard) – это инструмент, который позволяет вам подписывать и проверять цифровые подписи с использованием криптографии с открытым ключом. Когда коммит подписан, к коммиту добавляется подпись GPG, и эта подпись может быть проверена с помощью git verify-commit
.
Например, если вы хотите проверить подпись фиксации с помощью хэша cb7f1d
, вы можете выполнить следующую команду:
git verify-commit cb7f1d
В выходных данных будет указано, является ли подпись действительной или нет, и если она действительна, то также будет указано, какой ключ использовался для подписи фиксации. Например, действительная подпись может привести к следующему результату:
gpg: Signature made Mon 01 Jan 2020 00:00:00 AM UTC
gpg: using RSA key ABCD1234
gpg: Good signature from “John Doe <john.doe@example.com>” [ultimate]
gpg: aka “John Doe (Example Company) <john.doe@example.com>” [ultimate]
Важно отметить, что для проверки подписи коммита вам необходимо иметь открытый ключ человека, подписавшего коммит. Вы можете импортировать открытый ключ человека, подписавшего коммит, с помощью команды gpg
или загрузив его с сервера открытых ключей.
git verify-tag
Она используется для проверки подлинности тега в репозитории Git. Это делается путём проверки подписи на объекте тега с помощью GPG.
Во-первых, вам нужно будет создать подписанный тег. Вы можете сделать это, используя опцию -s
при выполнении команды git tag:
git tag -s v1.0
Далее вам нужно будет импортировать открытый ключ человека, создавшего тег. Это можно сделать с помощью команды git-key
:
git key import publickey.asc
Наконец, вы можете запустить команду git verify-tag
, чтобы проверить подлинность тега:
git verify-tag v1.0
Это проверит подпись на объекте тега и укажет, является ли это действительной подписью или нет.
Пожалуйста, обратите внимание, что вам необходимо установить и настроить GPG на вашем компьютере, чтобы использовать эту команду.
Заключение
Подводя итог, можно сказать, что Git – это мощный инструмент для управления кодом и проектами. В то время как базовые команды Git, такие как commit, push и pull, необходимы для повседневного использования, существует большое разнообразие продвинутых команд, которые могут помочь вам работать более эффективно.
Изучая и используя эти продвинутые команды Git, вы можете оптимизировать свой рабочий процесс, улучшить сотрудничество с другими разработчиками и использовать мощные возможности Git. Важно отметить, что неплохо поэкспериментировать с этими командами в тестовом репозитории, прежде чем использовать их в реальном проекте.