Skip to content

Instantly share code, notes, and snippets.

@ShilGen
Created November 22, 2023 19:43
Show Gist options
  • Save ShilGen/d23dda906201bdf63e6778ea983425f4 to your computer and use it in GitHub Desktop.
Save ShilGen/d23dda906201bdf63e6778ea983425f4 to your computer and use it in GitHub Desktop.
Мини-курс: Работа Git

Мини-курс: Работа Git

Программа курса:

  1. Основы. Git в pet-проекте
  2. Повседневные инструменты
  3. Ветки.

1. Основы. 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>

2. Повседневные инструменты

Эти вещи помогут вам начать пользоваться 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 (несколько небезопасно)

3. Ветки.

На этом этапе нужно научиться сотрудничать с другими людьми. Научиться нужно ДО начала любой совместной работы.

Концепции, в которых нужно досконально разобраться:

Ветки: что они из себя представляют, зачем они нужны, как ими пользоваться
Мерж
Соглашения об именовании веток
Как писать хорошие сообщения коммитов
Что такое форк репозитория?

Команды, которые нужно хорошенько освоить:

git merge
git branch
git checkout <branch>
git checkout -b
git blame <file>

4. Командная работа: rebase и пул-реквесты

Я выделил эту тему, потому что на этом этапе появляется первая команда, с помощью которой можно навредить вашему удаленному репозиторию: git push —force-with-lease.

Конечно, если вы делаете rebase своей локальной ветки, вам придется сделать пуш с этой опцией в удаленный репозиторий. В общем, это опасно, но научиться этому надо, если хотите уметь работать в команде.

Я также добавил здесь тему пул-реквестов. Это важная концепция, но по сути она больше касается работы с GitHub/GitLab, чем собственно с Git.

Концепции, в которых нужно досконально разобраться:

Простой rebase (и его отличие от мержа)
Что такое пул-реквесты?
Как сделать PR из ветки в ветку?
Как сделать PR из форка в оригинальный репозиторий?

Команды, которые нужно хорошенько освоить:

git rebase
git push —force-with-lease (ОСТОРОЖНО!)

5. Уверенное использование Git

На этом этапе вы должны научиться лучше организовывать историю своей работы и ветки, а также легко перемещаться по истории.

Концепции, в которых нужно досконально разобраться:

Как переписывать локальную историю
Интерактивный 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>

6. Продвинутый уровень

На этом уровне нужно научиться исправлять то, что наделали сами или кто-то другой.

Концепции, в которых нужно досконально разобраться:

Что такое reflog?
Как убрать конфиденциальные данные из репозитория
Как эффективно определять плохие коммиты

Команды, которые нужно хорошенько освоить:

git reflog
git-filter-branch
git-filter-repo
git bisect

В качестве эффективной альтернативы командам git-filter я рекомендую BFG.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment