VCS (Version Control System) - система контроля версий, регистрирующая изменения в одной или нескольких файлах с тем, чтобы в дальнейшем была возможность вернуться к определенным старым версиям этих файлов. [1.1]
CVCS (Central Version Control System) - централизованная система контроля версий, которая подразумевает, что существует сервер, на котором хранятся все файлы под контролем VCS, и ряд клиентов получают копии файлов из него. [1.2]
DVCS (Distributed Version Control System) - распределенная система контроля версий подразумевает, что у клиентов находится полная копия репозитория с сервера, что позволяет легко восстановить рабочий прототип, если с ним что-то случится. [1.3]
Принцип хранения - многие VCS хранят свои данные в виде списка изменений, Git же хранит полные копии файлов, только заменяя неизмененные файлы на ссылки. [2.1]
Локальные операции - для совершения большинства операций в Git'е необходимы только локальные файлы и ресурсы, т.е. обычно информация с других компьютеров в сети не нужна. [2.2]
Состояние файла - в Git'е файлы могут находиться в следующих состояниях: fixed, changed, stagedm untracked, ignored. [2.3]
git add), то он переходит в staged.git commit), то он переходит в fixed.Repository - это место, где Git хранит метаданные и базу данных объектов вашего проекта.
Working Directory - это извлечённая из базы копия определённой версии проекта.
Staging Area - это обычный файл, хранящийся в репозитории Git'а, который содержит информацию о том, что должно войти в следующий коммит.
Blob (Binary Large Object) - каждая версия файла представлена блобом.
Tree - объект, который представляет директорию.
Commit - содержит текущее состояние репозитория.
Branch - используется для создания новой ветки разработки.
master.Tag - обозначает значимое имя с указанной версией в репозитории.
Clone - эта операция создает локальный инстанс репозитория.
Pull - операция копирования изменений из удаленного репозитория в локальный.
Push - операция копирования изменений из локального репозтироия в удаленный.
HEAD - указатель, который обычно указывает на последний комит в ветке.
Revision - представляет собой версию исходников
URL - место, где находится репозиторий.
git config).git config - считывание или запись глобальных или локальных конфигураций. [4.1]
git config --global user.name "[name]" - указывает символическое имя, которое будет привязываться к каждому комиту. git config --global user.name "CustomName" - добавление имени CustomName в конфиг.git config --global user.email "[email address]" - указывает почту, которая будет привязываться к каждому комиту. git config --global user.name "CustomName@email.com" - добавление почты CustomName@email.com в конфиг.git config --global alias.[name] [alias]|"[composit alias]" - добавляет глобальный алиас (сокращение). git config --global alias.cf config - добавление алиаса, который делает сокращение git cf для команды git config добавления конфигурации.git config --global alias.cfg "config --global" - добавление составного алиаса, который делает сокращение git cfg для команды git config --global добавления глобальной конфигурации.git config --list - перечисляет все ключи конфигураций и их значения.git config --unset --global [config] - удаляет указанный ключ из конфигураций.git config --unset alias.cf - удаление алиаса git cf.git init - создание пустого репозитория или переинициализация существующего. [4.2]
git init - создает репозиторий в текущей папке.git init [directory] - создает директорию "directory" с репозиторием.git clone - операция клонирования репозитория. [4.3]
git clone [repository] - клонирование репозитория, который находится по пути "repository".git clone git@github.com:[username]/[repository].git - клонирование репозитория по ssh ключу.git clone https://github.com/[username]/[repository].git - клонирование репозитория через https протокол.git clone [repository] [directory] - клонирование репозитория, который находится по пути "repository", в указанную директорию "directory".git clone https://github.com/[username]/[repository].git /home/name/projects/project - клонирование репозитория в директорию /home/name/projects/project/.git clone -b [branch] [repository] - клонирование определенной ветки репозитория.git clone -b master git@github.com:[username]/[repository].git - клонирование ветки master.git clone -l [repository] - клонирование локального репозитория.git clone -l /home/name/projects/project/ /home/name/projects/project2/ - клонирование локального репозитория из директории project в директорию project2.git add - операция индексирования файла. [4.4]
git add [modified] - индексирование одного файла "modified", или дирректории "modified", или всех объектов, удовлетворяющих паттерну "modified".git add . - добавляет все файлы в текущей директории и ее поддиректориях.git add .gitignore - добавляет в индекс файл .gitignore.git add project/ - добавляет в индекс файлы из директории project/.git add Documentation/\*.txt - добавляет в индекс все .txt файлы в директории Documentation/.git add -A - добавление в индекс всех modified файлов в проекте.git status - операция вывода статуса текущего working tree. [4.5]
git status [file] - выводит статус по текущему файлу.git status - показывает статус всех modified и staged файлов.git status .gitignore - показывает статус файла .gitignore.git status project/ - показывает статус папки project/.git status Documentation/\*.txt - показывает статус всех .txt файлов в директории Documentation/.git status --ignored - выводит статус также и ignored файлов.git diff - показывает изменения между элементами. [4.6]
git diff [file] - выводит изменения в текущем файле.git diff - показывает статус всех modified файлов.git diff .gitignore - показывает статус файла .gitignore.git diff project/ - показывает статус папки project/.git diff Documentation/\*.txt - показывает статус всех .txt файлов в директории Documentation/.git diff [object] - выводит изменения в текущем объекте.git diff master - показывает изменения между текущей веткой и веткой master.git diff HEAD HEAD^ - показывает изменения между предыдущим комитом и комитом после него.git diff --name-status - выводит только имена файлов, которые являются modified.git commit - записывает изменения в репозиторий. [4.7]
git commit [file] - добавляет staged изменения в текущем файле в репозиторий.git commit - добавляет в репозиторий (делает fixed) все staged объекты.git commit .gitignore - добавляет в репозиторий файл .gitignore.git commit project/ - добавляет в репозиторий папкe project/.git commit Documentation/\*.txt - добавляет в репозиторий все .txt файлы в директории Documentation/.git commit -m '[message]' - сообщение для комита можно ввести в ковычках вместо того, чтобы открывать редактор.git commit -m 'Init commit' - делает комит 'Init commit'.git commit -a - автоматически индексирует измененные файлы, которые ранее были добавлены в репозиторий и делает комит.git commit --amend - добавляет все staged файлы в предыдущий комит, тем самым перезаписывая его хэш.git reset - передвигает HEAD в указанное состояние. [4.8]
git reset -- [file] - отменяет добавление файлов в staged area.git reset - отменяет изменения, добавленые в staged area с помощью git add, и делает их обратно modified.git reset .gitignore - добавляет в репозиторий файл .gitignore.git reset project/ - добавляет в репозиторий папкe project/.git reset Documentation/\*.txt - добавляет в репозиторий все .txt файлы в директории Documentation/.git reset [object] - передвигает HEAD на указанный объектgit reset HEAD^ - переводит последние закомиченные fixed изменения в состояние modified.git reset ORIG_HEAD - чтобы обратиться к HEAD, который был до reset, можно написать ORIG_HEAD.git reset 99F99F - переводит все изменения в комитах после комита с текушим хэшом "99F99F" в состояние modified.git reset HEAD@{5} - переводит голову в состояние, в котором она была 5 "передвижений" назад (чтобы узнать где она была 5 шагов назад, стоит посмотреть git reflog).git reset --soft - не затрагивает проиндексированные файлы или рабочую директорию.git reset --soft HEAD^ - переводит последние закомиченные изменения в состояние staged и оставляет рабочую директорию такой, какая она была до reset.git reset --hard - удаляет комит и изменения из рабочей директории.git reset --hard HEAD^ - удаляет из дерева последний комит вместе со всеми изменениями.git reset --hard [remote]/[branch] - полностью перезаписывает текущую локальную историю и изменения в рабочей директории на те, что находятся в указанной удаленный ветке.git reset --hard origin/master - делает текущую ветку идентичной удаленной ветке "master".git reset --merge - не затрагивает проиндексированные файлы или workng tree.git reset --merge ORIG_HEAD - отменяет последнее слияние веток.git rm - удаляет файлы из рабочей директории и фиксирует изменения. [4.9]
git rm [file] - удаляет указанный файл и фиксирует изменения.git rm --cached - переводит файл из состояния committed в состояние untracked.git mv - перемещает или переименовывает файлы, директории, символически ссылки. [4.10]
git mv [file] [file] - изменяет имя указанного файла и фиксирует изменения.git branch - выводит, создает или удаляет ветки. [4.11]
git branch - выводит все локальные ветки в данном репозитории.git branch [branch] - создает новую ветку с указанным именем "branch".git branch -d [branch] - удаляет ветку с указанным именем "branch".git branch --set-upstream-to=[remote]/[branch-remote] [branch-local] - устанавливает связь текущей ветки
"branch-local" с веткой "branch-remote" в удаленном репозитории "remote".git checkout - переключается между элементами или откатывает изменения в файлах в рабочей директории. [4.12]
git checkout -- [file] - откатывает изменения в файле.git checkout [object] - переходит на указанный объект.git checkout --track [remote] [branch] - создает новую локальную ветку "branch", идентичную удаленной ветке.git merge - соединяет две или более истории в одну. [4.13]
git merge [object] - сливает историю согласно указанному объекту.git merge -s [strategy] - сливает истории, используя указанную стратегию.git merge --no-commit - сливает истории, не создавая нового комита.git log - показывает лог комитов. [4.14]
git log [object] - показывает историю согласно указанному объекту.git log [file] - показывает комиты, в которых фигурировал данный файл.git log -[N] - ограничивает число выведенных коммитов на N.git stash - прячет, достает, очищает изменения в рабочей директории. [4.15]
git stash - прячет все текущие staged файлы в стэш.git stash pop - достает все файлы из стэша в staged area.git stash list - показывает все файлы в стэше.git stash clear - очищает стэш, удаляя все файлы в нем.git tag - создает, показывает, удаляет или проверяет теги. [4.16]
git tag - выводит все созданные теги.git tag - l [pattern] - выводит все созданные теги, удовлетворяющие указанному паттерну.git tag [name] - создает тег для текущего положения HEAD с именем "name".git tag -d [name] - удаляет тег с именем "name".git tag -a [version] - создает аннотированный тег, который является полноценным объектом.git fetch - загружает историю из указанного репозитория. [4.17]
git fetch [remote] - обновляет все ветки, связанные с данным удаленным репозиторием.git fetch --all - обновляет все ветки, которые имеют привязки к удаленным репозиториям.git pull - загружает историю из указанного репозитория и сливает ее с локальной историей. [4.18]
git pull [remote] [branch] - загружает историю ветки из указанного удаленного репозитория.git pull -r - применяет rebase алгоритм вместо merge при слиянии истории.git push - загружает историю в удаленный репозиторий. [4.19]
git push [remote] [branch] - загружает историю локальной ветки в указанный удаленный репозиторий.git push [remote] :[branch] - удаляет указанную ветку из удаленного репозитория.git remote - управляет набором отслеживаемых репозиториев. [4.20]
git remote - показывает имена подключенных репозиториев.git remote -v - показывает имена и пути подключенных репозиториев.git remote add [name] [path] - доgit show - выводит информацию о различных объектах. [4.21]
git show [object] - выводит информацию об указанном объекте.git cherry-pick - переносит изменения, представленные в указанных комитах. [4.22]
git cherry-pick [commit] - применяет указанный комит к текущей ветке.git rebase - переносит локальные комиты в указанное положение в дереве. [4.23]
git rebase [object] - применяет комиты из указанного объекта на текущую ветку.git rebase -i - открывает редактор с выделенными комитами, где можно указать параметры ребейза
определенного коммита.git rebase [object] --onto [newbase] - применяет выделенные коммиты в "newbase".git revert - отменяет существующие комиты. [4.24]
git revert [commit] - отменяет изменения, на которые указывает данный объект.git revert --no-commit - отменяет изменения без создания нового комита.git grep - выводит строки, удовлетворяющие паттерну. [4.25]
git grep [pattern] -- [file-pattern] - возвращает все выражения удовлетворяющие "pattern" во всех файлах,
удовлетворяющих "file-pattern".git grep -e - означает, что следущий параметр является паттерном.git clean - удаляет неиндексированные файлы из рабочей директории. [4.26]
git clean [file] - удаляет untracked указанный файл.git clean -d - удаляет также и директории.git clean -f - если в конфигурациях поле clean.requireForce не true, то без этого параметра git откажется
удалять файлы.git clean -x - игнорирует .gitignore файл, тем самым можно удалять ignored файлы.git reflog - управляет reflog информацией. [4.27]
git reflog [ref] - выводит reflog указанного ref.