Git - распределённая система управления версиями.
Инструкции
Инициализация / init
$ git init $ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com
Конфигурация
Вывод установленных параметров
$ git config --local -l
Установка параметров
$ git config --local core.filemode true
Актуализация изменений
$ git pull && git checkout -- . && git pull && git submodule update --init --recursive
Локальное хранилище / stage
- Добавление в индекс
- git add <имя_файла>
- git add *
- git add .
- git add -A - Добавить в индекс только удаленные файлы
- Удаление из индекса
- git rm <имя_файла>
- git rm *.php
- git reset - Отменить индексацию последних изменений
- git rm --cached <ИМЯ_ФАЙЛА> - Удалить из индекса файл и добавить в игнор. Файл останется в каталоге.
- git reset HEAD benchmarks.rb - Отменить индексацию файла benchmarks.rb
Локальный репозиторий
- git clonehttp://site.com/git
- Фиксация изменений
- git commit -m "Описание коммита"
- git checkout <hash-коммита> - Переключиться на определенный коммит
- git commit --amend - Удаление последнего коммита
- Восстановление файлов из репозитория
- git checkout <branch> # Перемещение указателя HEAD на комит или ветку
- git reset --hard HEAD~n # Перемещение указателя HEAD на комит
- git checkout -- <имя_файла> - восстановление файла из репозитория
- git reset --hard origin/master - удалить все локальные изменения и коммиты
- git reset --hard origin/master
- git reset --hard HEAD^ # Сбросить все локальные измеения до текущего состояния
- Перемещение комитов
- git rebase -i HEAD~n # Позволяет переупорядочивать, менять комменты, выборочно удалять и прочее
- Ветвление branch
- git branch bug1Создать ветку bug1
- git branch -d bug1Удалить ветку bug1
- Пересадка веток / rebase
- git rebase master
- git checkout master # переключаемся на бранч master
- git rebase bug1 # пересаживаем историю изменений ветки bug1 в master
- или
- git checkout bug1
- git rebase master
- git checkout master
- git merge bug1 # При этом произойдет fast-forward merge
Отмена коммитов
До комита
- git reset --hard HEAD
После комита
- git reset --hard ORIG_HEAD
Документация
Временное хранилище / Stash
Часто возникает такая ситуация, что пока вы работаете над частью своего проекта, всё находится в беспорядочном состоянии, а вам нужно переключить ветки, чтобы немного поработать над чем-то другим. Подробнее...
Вместо git reset --hard, можно сначала файлы сохранять во временное хранилище, затем применять изменения.
- git stashПоместить файлы во временное хранилище
- git stash applyПрименить последнее изменение из стека / лога к текущей рабочей копии
- git stash dropУдалить последнее изменение в стеке / лога
- git stash listПоказать все изменения в стеке / логе
- git stash showПоказать последнее измененеие в стеке / логе (патч)
- git stash popПрименить последнее изменение из стека к текущей рабочей копии и удалить его из стека
- git stash clearОчистить стек изменений
Удаленный репозиторий / origin
- Синхронизация
- git push origin master
- git remote add origin <адрес_сервера>
Submodule / Субмодули
- git submodule add git@github.com:Mirocow/express-chat.git
- git submodule update –init [express-chat]
- git submodule update --init --recursive - обновить все зависимые модули (репозитории)
- git rm -r yii2-mongodb - Удалить сабмодуль yii2-mongodb
- git rm -r yii2-redactor - Удалить сабмодуль yii2-redactor
- git submodule add -- /to/path/git/dir - Добавить локальный модуль (Необходимо указывать только полный путь до папки)
Как вынести код в отдельный репозитоий
Дано:
- Основной репозиторий app/
- Необходимый код лежит тут app/vendor/mirocow/yii2-redactor
- копируем код в отдельную папку и создаем репозитоий путь-до-репозитория/yii2-redactor
- удаляем если есть уже ранее созданный модуль git rm -rf yii2-redactor
- обязательно переходим в добавляемую папку app/vendor/mirocow
- добавляем модуль как отдельный репозитоий из папки git submodule add -f путь-до-репозитория/yii2-redactor/
Настройка
- git config color.ui true - использовать цветной вывод в терминале
http://marklodato.github.io/visual-git-guide/index-ru.html?no-svg