Программа курса:
- Основы. Git в pet-проекте
- Повседневные инструменты
- Ветки.
Начните с использования Git для личных нужд. Пока не думайте ни про какие ветки, делайте все в main.
Концепции, в которых нужно досконально разобраться:
* В чем разница между Git и GitHub?
* Что такое коммит?
* Что такое стадия стейджинга?
* Что такое ветка?
* Что из себя представляют удаленный и локальный репозитории?
* Как установить один или несколько upstream-репозиториев?
* Как делать коммиты?
* Как делать push / pull в upstream-репозиторий?
Команды, которые нужно хорошенько освоить:
`git init`
git clone <repository>
git status
git add <file>
git add —all
git commit
git remote add
git remote set-url
git remote -v
git push <repository> <branch>
git pull <repository> <branch>
Эти вещи помогут вам начать пользоваться Git как рабочим инструментом. Также на этом этапе нужно уделить немного времени изучению настроек.
Концепции, в которых нужно досконально разобраться:
Файл .gitignore
Файл .gitconfig
Просмотр лога коммитов
Манипуляции с файлами при помощи reset, clean, checkout <file>, rm
Манипуляции с репозиторием при помощи stash
Команды, которые нужно хорошенько освоить:
git log (with and without —stat)
git checkout <file>
git reset <file> (ОСТОРОЖНО!)
git reset —hard (ОСТОРОЖНО!)
git clean -f (ОСТОРОЖНО!)
git rm <file> (ОСТОРОЖНО!)
git config —global user.name
git config —global user.email
git stash
git stash apply
git stash clear (несколько небезопасно)
На этом этапе нужно научиться сотрудничать с другими людьми. Научиться нужно ДО начала любой совместной работы.
Концепции, в которых нужно досконально разобраться:
Ветки: что они из себя представляют, зачем они нужны, как ими пользоваться
Мерж
Соглашения об именовании веток
Как писать хорошие сообщения коммитов
Что такое форк репозитория?
Команды, которые нужно хорошенько освоить:
git merge
git branch
git checkout <branch>
git checkout -b
git blame <file>
Я выделил эту тему, потому что на этом этапе появляется первая команда, с помощью которой можно навредить вашему удаленному репозиторию: git push —force-with-lease.
Конечно, если вы делаете rebase своей локальной ветки, вам придется сделать пуш с этой опцией в удаленный репозиторий. В общем, это опасно, но научиться этому надо, если хотите уметь работать в команде.
Я также добавил здесь тему пул-реквестов. Это важная концепция, но по сути она больше касается работы с GitHub/GitLab, чем собственно с Git.
Концепции, в которых нужно досконально разобраться:
Простой rebase (и его отличие от мержа)
Что такое пул-реквесты?
Как сделать PR из ветки в ветку?
Как сделать PR из форка в оригинальный репозиторий?
Команды, которые нужно хорошенько освоить:
git rebase
git push —force-with-lease (ОСТОРОЖНО!)
На этом этапе вы должны научиться лучше организовывать историю своей работы и ветки, а также легко перемещаться по истории.
Концепции, в которых нужно досконально разобраться:
Как переписывать локальную историю
Интерактивный rebase
Управление ветками (prune, fetch)
Использование HEAD-нотации или хешей коммитов
Использование diff для сравнения коммитов
Как сделать revert коммита
Команды, которые нужно хорошенько освоить:
git commit —amend
git rebase -i
git prune
git fetch
git remote prune
git checkout HEAD/HEAD~1/<commit hash>
git diff <commit hash 1> <commit hash 2>
git revert <commit hash>
На этом уровне нужно научиться исправлять то, что наделали сами или кто-то другой.
Концепции, в которых нужно досконально разобраться:
Что такое reflog?
Как убрать конфиденциальные данные из репозитория
Как эффективно определять плохие коммиты
Команды, которые нужно хорошенько освоить:
git reflog
git-filter-branch
git-filter-repo
git bisect
В качестве эффективной альтернативы командам git-filter я рекомендую BFG.