Как освоить Git медленно, но верно

0
1644
views

Перевод статьи «How to learn Git slowly».

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

Я уже довольно давно занимаюсь обучением будущих веб-разработчиков. Это дает мне преимущество: я могу отслеживать, какие ошибки чаще всего допускают новички.

Что касается изучения Git… это непростая задача. Поэтому новички легко путаются. А ошибки стоят дорого: никто не хочет быть тем самым парнем, который стер чужую работу.

Лучший способ освоить Git — делать это постепенно. И чтобы стать мастером, потребуется некоторое время.

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

1. Основы. Использование Git в одиночку

Начните с использования 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>
Photo by Mark König on Unsplash

4. Основы сотрудничества: rebase и пул-реквесты

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

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

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

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

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

  • 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. Продвинутый уровень

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

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

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

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

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

Итоги

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here