
1. Порядок работы
1.1. Делаем изменения
1.2. Git add .
1.2.1. Берет все изменения текущей директории
1.2.2. Вместо точки - можно указать файл
1.3. Git игнорирует пустые директории! Класть в них файл .gitkeep
1.4. Git commit
1.4.1. Комментируем изменения и добавляем в репо
1.5. Git commit -a (add+commit)
1.6. .gitignore - в корне для файлов, которые надо игнорировать. Действуют regexp
1.6.1. https://github.com/github/gitignore
2. Отслеживание новой директории
2.1. Перейти в нее
2.2. Git init
2.3. Для удаления - удалить папку .git
2.4. GIT CLONE URL .
2.4.1. Клонирует репо из урла в текущую папку
3. Общие команды
3.1. Git log
3.1.1. Показывает последние коммиты
3.2. Git log --oneline --graph --all --decorate
3.2.1. украшаем лог
3.3. Git status
3.3.1. Есть ли новые изменения, не добавленные в коммиты?
3.4. Git diff
3.4.1. Показывает внесенные изменения, которые не были добавлены в репо (только в рабочей дирректории) - проверяются строки
3.5. Git diff --staged
3.5.1. Внесенные изменения в stage
3.6. Git diff --color-words <file>
3.6.1. Точное указание изменений - кусок строки
3.7. Git diff SHA_COMMIT [file]
3.7.1. Показывает отличия файлов текущего коммита от указанного
3.8. Git rm <file>
3.8.1. Удалить файл из рабочей дирректории
3.9. Git mv file.txt file2.txt
3.9.1. Переименование, перемещение
3.9.2. Можно удалить через проводник, потом rm + add - git поймет, что мы переименовали
3.10. Git checkout -- index.html
3.10.1. Восстановить файл или дир из репо
3.11. Git checkout SHA_COMMIT -- index.html
3.11.1. Восстановить файл из прошлого коммита
3.12. Git reset HEAD file.txt
3.12.1. Сбросить git add file.txt
3.13. Git commit --amend
3.13.1. Поменять сообщение последнего коммита
3.14. Git revert SHA_COMMIT
3.14.1. Отменить все действия этого коммита и создать новый коммит
3.15. Git reset
3.16. Git clean -n
3.16.1. Покажет какие файлы можно удалить перед коммитом (temp)
3.17. Get clean -f
3.17.1. Удалит файлы! Удаляет файлы, которым мы не сделали Git add
3.18. Git show SHA_COMMIT
3.18.1. Показывает diff, сделанный в коммите
4. Treeish
4.1. относительные ссылки на коммиты
4.2. HEAD^^ || HEAD~2
4.3. SHA_COMMIT^^
4.4. Git ls-tree HEAD || Git ls-tree HEAD^
5. Branches
5.1. Git branch -a
5.1.1. Показывает существующие бранчи
5.1.2. Звездочка показывает где мы сейчас
5.2. Git branch --merged
5.2.1. Показывает все ветви, которые содержат коммиты предыдущих ветвей
5.3. Git branch -m old_name new_name
5.3.1. Переименование ветви
5.4. Git branch -d name
5.4.1. Удалить ветвь
5.5. Git branch new_feature
5.5.1. Создаем новую ветвь
5.6. Git checkout new_feature
5.6.1. Переключаем ХЕД на ветвь
5.7. Git checkout -b new_feature
5.7.1. Создаем и переключаемся на ветвь!
5.8. Git diff master..new_branch
5.8.1. Сравнить бренчи
5.9. MERGE
5.9.1. Переключиться на ветвь, в которую будем делать merge
5.9.2. Git merge branch_name
5.9.3. Gir merge --abort
5.9.3.1. Отменить при конфликтах
5.10. STASH
5.10.1. Место, где мы можем хранить файлы без коммитов
5.10.2. Можно применять, когда мы хотим переключить ветку без коммита
5.10.3. Stash можно применять в любой ветви без коммита
5.10.4. Git stash save "Comments to stash"
5.10.5. Git stash list
5.10.5.1. List of stashes
5.10.6. Git stash show [email protected]{0}
5.10.7. Git stash pop [email protected]{0}
5.10.7.1. Применяет сташ к текущей ветке и удаляет его
5.10.8. Git stash apply [email protected]{0}
5.10.8.1. Не удаляет
5.10.9. Git stash drop [email protected]{0}
6. REMOTE
6.1. Git remote [-v]
6.1.1. Показывает список подключенных серверов
6.2. Git remote add <alias> <url>
6.2.1. alias по умолчанию - origin
6.3. Git remove rm <alias>
6.4. Git clone <url> [name]
6.4.1. Склонировать в текущую папку
6.5. Git push [-u] <alias> <branch_name_local>
6.5.1. Если трекинг - просто Git push
6.5.2. Трекинг ставим при помощи -u
6.6. Git log origin/master
6.6.1. Обращение к remote репо
6.7. Git fetch <alias>
6.7.1. Получает сведения о ветке с гитхаба
6.8. Git merge <alias>/<branch>
6.8.1. Скопирует то, что получили в fetch в текущую локальную ветвь
6.9. Git checkout -b <new_local_branch> <alias>/<remote_branch>
6.9.1. Скопирует новую полученную ветку из fetch в новую локальную ветку
6.10. Git pull = git fetch + git merge
6.10.1. Если возникают ошибки - применять отдельно
6.11. Git push <alias> --delete <branch_name>
6.11.1. Удаляет ветвь на удаленном сервере
6.12. git config remote.<alias>.url https://you:[email protected]/you/example.git
6.12.1. Если хотим закешировать пароль