Git - распределённая система управления версиями.
Инструкции
Инициализация / init
$ git init
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
Linux/Unix/Macos
global
$ git config --global core.filemode false
local
$ git config core.filemode false
Windows
global
$ git config --global core.filemode false
$ git config --global core.preloadindex true
$ git config --global core.fscache true
$ git config --global gc.auto 256
$ git config --global status.submoduleSummary false
local
$ git config core.filemode false
$ git config core.preloadindex true
$ git config core.fscache true
$ git config gc.auto 256
$ git config status.submoduleSummary false
Конфигурация
Вывод установленных параметров
Установка параметров
$ git config --local core.filemode true
Актуализация изменений
$ git checkout -- . && git pull && git submodule update --init --recursive
Локальное хранилище / stage
Добавление в индекс
Удаление из индекса
git rm <имя_файла>
git rm *.php
git reset - Отменить индексацию последних изменений
git rm –cached <ИМЯ_ФАЙЛА> - Удалить из индекса файл и добавить в игнор. Файл останется в каталоге.
git reset HEAD benchmarks.rb - Отменить индексацию файла benchmarks.rb
Локальный репозиторий
Отмена коммитов
До комита
После комита
Документация
Временное хранилище / 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
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_CURL_VERBOSE
$ GIT_CURL_VERBOSE=1 git clone htps://...
GIT_TRACE
Принимает значаения 1, 2 или true
$ GIT_TRACE=2 git clone htps://...
Настройка
Настройка deploy on github
Настройка github для работы с Deploy keys
Ошибки
При возникновении ошибки вида
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to rebase against.
See git-pull(1) for details
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> master
следует выполнить
$ git pull origin master
$ git branch --set-upstream-to=origin/master master
$ git pull
Видеоуроки
Документация
Сервер
Клиенты
Code Review
Ссылки