
1. Установка
1.1. Windows
1.1.1. http://git-scm.com/download/win
1.2. Linux
1.2.1. CentOs
1.2.1.1. sudo yum install git gitflow
1.2.2. Ubuntu
1.2.2.1. sudo apt-get install git git-flow
2. Инициализация
2.1. git init
2.2. git flow init
3. Настройка
3.1. Aliases
3.1.1. Windows
3.1.1.1. git config --global alias.co checkout
3.1.1.2. git config --global alias.ci commit
3.1.1.3. git config --global alias.st status
3.1.1.4. git config --global alias.br branch
3.1.1.5. git config --global alias.hist 'log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short'
3.1.1.6. git config --global alias.type 'cat-file -t'
3.1.1.7. git config --global alias.dump 'cat-file -p'
3.1.2. Linux
3.1.2.1. Файл .gitconfig
3.1.2.1.1. [alias] co = checkout ci = commit st = status br = branch hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short type = cat-file -t dump = cat-file -p
3.2. Имя и email
3.2.1. git config --global user.name "Your Name"
3.2.2. git config --global user.email "[email protected]"
3.3. Параметры установки окончаний строк
3.3.1. Windows
3.3.1.1. git config --global core.autocrlf true
3.3.1.2. git config --global core.safecrlf true
3.3.2. Linux
3.3.2.1. git config --global core.autocrlf input
3.3.2.2. git config --global core.safecrlf true
4. Управление ветками
4.1. Создание
4.1.1. git checkout -b <branchname>
4.2. Слияние
4.2.1. merge
4.2.1.1. git merge <branchname from>
4.2.1.1.1. Слияние происходит в текущую ветку
4.2.1.1.2. При отсутствии конфликтов коммит происходит автоматически
4.2.2. rebase
4.2.2.1. git rebase <upper branchname>
4.3. Удаление
4.3.1. git branch -d <branchname>
4.4. Навигация
4.4.1. git checkout <branchname>
5. Управление метками
5.1. Создание
5.1.1. git tag <tagname>
5.2. Вывод списка
5.2.1. git tag
5.3. Удаление
5.3.1. git tag -d <tagname>
6. Управление изменениями
6.1. Индексация
6.1.1. Игнорирование
6.1.1.1. Файл .gitignore
6.1.2. git add <filename>
6.2. Коммит
6.2.1. git commit
6.2.1.1. Вызовет редактор сообщения для коммита
6.2.2. git commit -m "Текст комментария для коммита"
6.3. Извлечение
6.3.1. git checkout <hash>
6.3.2. git checkout <branch name>
6.3.3. git checkout <tag name>
6.3.4. Извлечение предыдущего коммита перед тэгом
6.3.4.1. git checkout <tag name>^
6.3.4.2. git checkout <tag name>~1
6.4. Проверка состояния
6.4.1. git status
6.5. История
6.5.1. git log
6.5.1.1. --pretty=
6.5.1.1.1. oneline
6.5.1.1.2. format:"..."
6.5.1.2. --max-count=2
6.5.1.2.1. Только 2 последние записи
6.5.1.3. --since='5 minutes ago'
6.5.1.3.1. Только за последние 5 минут
6.5.1.4. --until='5 minutes ago'
6.5.1.4.1. Кроме последних 5 минут
6.5.1.5. --author=<your name>
6.5.1.5.1. Только от определенного автора
6.5.1.6. --all
6.5.1.6.1. Все, включая соседние ветки
6.5.1.7. --graph
6.5.1.7.1. Отобразить граф ветвлений
6.5.1.8. --date=short
6.5.1.8.1. Более короткий формат даты
6.6. Отмена изменений
6.6.1. git checkout <filename>
6.6.1.1. Отменяет все правки
6.6.2. git reset HEAD <filename>
6.6.2.1. Отменяет индексированные правки
6.6.2.2. Не изменяет рабочий каталог. При необходимости использовать...
6.6.3. git revert HEAD
6.6.3.1. Доп. опция --no-edit
6.6.3.1.1. Генерация выходных данных без открытия редактора
6.6.3.2. Отменяет коммит, создавая отдельный коммит
6.7. Удаление изменений
6.7.1. git reset --hard <tagname>
6.8. Внесение изменений в последний коммит
6.8.1. git commit --amend -m "..."
6.8.1.1. Комментарий перезатирается
6.9. Перемещение файлов
6.9.1. git mv <filename> <directory>
6.9.2. Если файл перенесли вручную
6.9.2.1. git add <newpath/filename>
6.9.2.2. git rm <oldpath/filename>
6.10. Дополнительная информация о коммите
6.10.1. git cat-file -t <hash>
6.10.1.1. Тип коммита
6.10.2. git cat-file -p <hash>
6.10.2.1. Отображение дампа по коммиту
7. Работа с удаленным репозиторием
7.1. Клонирование
7.1.1. git clone <path>
7.2. Изменения
7.2.1. Извлечение
7.2.1.1. git pull <remotename> <branchname>
7.2.2. Слияние
7.2.3. Отправка
7.2.3.1. git push <remotename> <branchname>
7.3. Добавление
7.3.1. git remote add <remotename> [email protected]:username/path.git