#Github/git cheatsheet
##Форк и стягивание
- Кнопка Fork в репозитории
- git clone <адрес своего форка из поля справа>
##Коммиты
- git status - просмотр состояния репозитория
- git add <file> - добавление в stage; git add . - добавить всё
- git rm <file> - staging удаления файла
- git commit -m "комментарий" - коммит
- git commit -am "комментарий" - коммит с пропуском stage (автоматически добавляет на stage все изменения - но не новые файлы!)
У каждого коммита есть SHA-код, его идентифицирующий. Посмотреть их можно командой git log, это длинная шестнадцатиричная строка. Для того, чтобы указать на какой-либо коммит (примеры будут даны ниже), достаточно использовать первые несколько символов кода, минимум 4.
##Отмена
- git reset HEAD <file> - отмена внесения в stage (изменения перестают сопровождаться)
- git checkout -- <file> - отмена изменений из unstaged файла
А как отменить коммит, спросите вы? А я вам отвечу: идите нахуй!
##Быстрая правка коммита
git commit --amend - позволяет добавить изменения из stage в последний коммит (исправить его). Применять только в крайнем случае.
##Синхронизация форка
- Настроить upstream (один раз для локального репозитория): git remote add upstream <адрес оригинального репозитория>
- git fetch upstream
- git merge upstream/master
##Отправка изменений
- git push - отправить коммиты из локального репозитория в гитхабовский
- git pull - наоборот, стянуть изменения из гитхаба в локальный репозиторий
##Ветки
- git branch <name> - создать ветку
- git checkout <name> - перейти на ветку
- git checkout -b <name> - создать ветку и перейти в нее
- git checkout -b <name> <commit-SHA> - создать ветку, состояние в которой будет состоянием на момент коммита с кодом commit-SHA
- git merge <другая ветка> - слияние: другая ветка мерджится в ту, в которой ты находишься
##Распределенный Git посредством обмена файлами Если не хочется использовать сервера/решения, следующие команды пригодны для распределенной работы с помощью файлов (которые пересылаются по почте, скайпу, флешками, дымовыми сигналами и т.п.)
###Использование git bundle
- git bundle create <файл> HEAD - создать новый bundle-архив из репозитория
- git bundle create <файл> <commit-SHA>..HEAD - создать обновление bundle-архива из всех коммитов от "<commit-SHA>" до последнего
- git pull <файл bundle> - стянуть изменения в репозиторий
- git clone <файл bundle> - создать новый репозиторий из bundle
##Простые теги
- git tag <тег> - создать тег для текущего коммита; впоследствии можно использовать его вместо указания SHA-кода!
- git tag <тег> <commit> - создать тег для коммита <commit>
- git push --tags - отправить сведения о тегах
##Markdown
#Заголовок 1 уровня
##Заголовок 2 уровня
######Заголовок 6 уровня
*курсив*
**жирный**
[текст](http://example.com) - ссылка
 - изображение
4 пробела - код, неформатированный текст
* маркированный список
* еще пункт
* подпункт
если пишешь не список, то текст, перенесенный
на другую строку в результате будет в одной строке; для того, чтобы начать другую
строку, нужно разделить два абзаца
пустой строкой
если пишешь не список, то текст, перенесенный на другую строку в результате будет в одной строке; для того, чтобы начать другую строку, нужно разделить два абзаца
пустой строкой
##Прочее
- git init - создать пустой репозиторий в этой папке (после этого все файлы в этой папке будут unstaged!)
- git log - просмотреть историю коммитов
###diff
- git diff - посмотреть, что изменено, но не staged
- git diff --staged - посмотреть, что staged, но не закоммичено
##Самое главное ###Pro Git Книга на русском, онлайн
###Git Magic Волшебство Git, онлайн