Шпаргалка по командам Git
Git — это распределенная система управления версиями с открытым исходным кодом, которая позволяет эффективно и быстро управлять версиями проектов любого размера: от совсем небольших до очень крупных. Git был разработан Линусом Торвальдсом для управления разработкой ядра Linux.
Основы Git
git init <directory>Создает пустой Git-репозиторий в указанном каталоге. Если запустить без параметров, текущий каталог будет инициализирован как Git-репозиторий.
git clone <repo>Клонирует репозиторий, находящийся по адресу <repo>, на локальную машину. Исходный репозиторий может находиться в локальной файловой системе или на удаленном сервере по протоколу HTTP или SSH.
git config user.name <name>Определяет имя автора, которое будет использоваться для всех коммитов в текущем репозитории.
git add <directory>Добавляет изменения в <directory> для следующего коммита.
git commit -m "<message>"Фиксирует изменения из индекса (staged snapshot), используя <message> в качестве сообщения коммита.
git statusВыводит список файлов, которые проиндексированы, не проиндексированы и не отслеживаются.
git logОтображает всю историю коммитов в формате по умолчанию.
git diffСравнивает различия между рабочей директорией (те изменения, для которых еще не было выполнено git add) и индексом (после git add).
Отмена изменений
git revert <commit>Создает новый коммит, который отменяет все изменения, внесенные в <commit>, и применяет его к текущей ветке.
git reset <file>Удаляет <file> из индекса, но оставляет рабочую директорию без изменений. Это отменяет индексацию файла, не перезаписывая изменения.
git clean -nПоказывает, какие файлы будут удалены из рабочей директории. Используйте флаг -f вместо -n для фактической очистки.
Перезапись истории
git commit --amendИзменяет последний коммит. Если в рабочей директории есть изменения, готовые к коммиту, они также будут включены в него при использовании команды git commit –amend.
git rebase <base>Выполняет перебазирование (rebase) текущей ветки на <base>. В качестве <base> может выступать ID коммита, имя ветки, тег или HEAD.
git reflogПозволяет просмотреть записи обо всех действиях во всех ветках (включая удаленные коммиты и операции сброса/reset).
Ветки Git
git branchВыводит список всех веток. Добавьте параметр <branch>, чтобы создать новую ветку с именем <branch>.
git checkout -b <branch>Создает и переключается на новую ветку с именем <branch>. Опустите -b, чтобы переключиться на существующую ветку.
git merge <branch>Сливает ветку <branch> в текущую ветку.
Удаленные репозитории
git remote add <name> <url>Добавляет новый удаленный репозиторий. После этого вы сможете использовать <name> как сокращение для <url> в других командах.
git fetch <remote> <branch>Получает все обновления указанной ветки <branch> из репозитория, но не сливает их с локальной веткой.
git pull <remote>Получает указанную удаленную копию текущей ветки и немедленно сливает ее с локальной копией.
git push <remote> <branch>Отправляет ветку в <remote> вместе с необходимыми коммитами и объектами. Если ветка не существует в удаленном репозитории, она будет там создана.
git config
git config --global user.name <name>Определяет имя автора для всех коммитов текущего пользователя.
git config --global user.email <email>Определяет электронную почту автора для всех коммитов текущего пользователя.
git config --global alias.<alias-name> <git-command>Создает сокращение (псевдоним) для команды Git.
git config --system core.editor <editor>Устанавливает текстовый редактор, который будет использоваться командами для всех пользователей компьютера.
git config --global --editОткрывает глобальный конфигурационный файл в текстовом редакторе для ручного редактирования.
git log
git log -<limit>Отображает последние <limit> записей истории коммитов.
git log --onelineОтображает историю коммитов, сжимая каждый коммит в одну строку.
git log -pОтображает историю коммитов и полные различия (diff) для каждого коммита.
git log --statОтображает историю коммитов, включая данные о том, какие файлы были изменены и относительное количество строк, добавленных или удаленных в каждом из них.
git log --author="<pattern>"Ищет коммиты конкретного автора.
git log --grep="<pattern>"Выполняет поиск по истории коммитов с использованием регулярных выражений.
git log <since>..<until>Отображает коммиты, созданные в период между <since> и <until>.
git log -- <file>Отображает записи из истории коммитов только для указанного файла.
git diff
git diff HEADСравнивает различия между рабочей директорией (те изменения, для которых еще не было выполнено git add) и репозиторием (после git commit).
git diff --cachedСравнивает различия между индексом (после git add) и репозиторием (после git commit).
git reset
git resetСбрасывает индекс к состоянию последнего коммита, оставляя рабочую директорию без изменений.
git reset --hardСбрасывает и индекс, и рабочую директорию к состоянию последнего коммита, перезаписывая все изменения в рабочей директории.
git reset <commit>Перемещает указатель текущей ветки назад к <commit> и сбрасывает индекс, но не затрагивает рабочую директорию.
git reset --hard <commit>Аналогично предыдущему, но сбрасывает и индекс, и рабочую директорию. Удаляет незафиксированные изменения и все коммиты, сделанные после <commit>.
git pull
git pull --rebase <remote>Получает удаленную копию текущей ветки и выполняет ее перебазирование (rebase) на локальную копию. Использует git rebase вместо merge для интеграции веток.
git push
git push <remote> --forceПринудительная отправка (Force push).
git push <remote> --allОтправляет все локальные ветки в указанный удаленный репозиторий.
git push <remote> --tagsОтправляет все локальные теги в удаленный репозиторий.