Git и Github: Практический урок для начинающих

В этом мини-курсе мы разберем на практике работу в Git, в связке git + github, gitlab, bitbucket, посоздаем и помержим ветки, поразруливаем самые разные конфликты, посоздаем пулреквесты. Для новичков я всячески рекомендую повторять за мной, чтобы максимально эффективно научиться работе с git.

Буду также рад подписке на мой уютный telegram бложик: https://t.me/OlegMalyshevBlog

В уроке рассмотрены темы 

  • О системе контроля версий и GIT
  • Какие системы контроля версий бывают
  • Установка
  • Про git config
  • Архитектура git
  • Создаем первый репозиторий, клонируем по https.
  • Про git status
  • Про Github
  • Работа в Git со стороны разработчика
  • SSH в Git
  • ssh-keygen
  • Про пары ключей
  • Создаем репозиторий через git init
  • Решаем проблему remote: Support for password authentication was removed on August 13, 2021. remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
  • Ветки в GIT
  • Про git branch
  • Про upstream branch
  • git merge (Слияние веток)
  • Решаем разные конфликты при мердже веток
  • Ревью автотестов в gitlab
  • Разруливаем конфликты на реальном проекте с автотестами git + idea + java + bitbucket.
  • Создаем, апрувим и мерджим pull request

 

Полезные ссылки 

Шпаргалка по командам git

git init

  • Описание: Инициализирует новый Git репозиторий.
  • Пример: git init

git clone <url>

  • Описание: Клонирует репозиторий из удаленного источника.
  • Пример: git clone https://github.com/user/repo.git

git add <file>

  • Описание: Добавляет файл в индекс для последующего коммита.
  • Пример: git add example.txt

git commit -m "message"

  • Описание: Коммитит изменения с сообщением.
  • Пример: git commit -m «Initial commit»

git status

  • Описание: Показывает статус изменений.
  • Пример: git status

git push <remote> <branch>

  • Описание: Отправляет изменения в удаленный репозиторий.
  • Пример: git push origin master

git pull <remote>

  • Описание: Забирает изменения из удаленного репозитория.
  • Пример: git pull origin

git branch <branch-name>

  • Описание: Создает новую ветку.
  • Пример: git branch new-feature

git checkout <branch-name>

  • Описание: Переключается на указанную ветку.
  • Пример: git checkout new-feature

git merge <branch-name>

  • Описание: Объединяет указанную ветку с текущей.
  • Пример: git merge new-feature

git diff

  • Описание: Показывает разницу между коммитами, ветками и т.д.
  • Пример: git diff

git log

  • Описание: Показывает историю коммитов.
  • Пример: git log

git reset

  • Описание: Отменяет изменения (может использоваться с разными опциями).
  • Пример: git reset —hard HEAD^ --hard: Этот флаг указывает Git полностью отменить все изменения в рабочем каталоге и индексе, возвращая их к состоянию последнего коммита. Это может привести к потере всех незакоммиченных изменений, поэтому его использование требует осторожности. HEAD^ или HEAD~1: Это означает «один коммит назад от текущего HEAD». HEAD — это указатель на текущий коммит (то есть последний коммит текущей ветки), а ^ (или ~1) указывает на коммит, который был сделан перед HEAD. Когда вы выполняете git reset --hard HEAD^, Git отменит все изменения, сделанные в последнем коммите, и вернет состояние репозитория к тому, как оно было до этого коммита. Все изменения, внесенные в последнем коммите, будут утеряны. Эта операция необратима, так что ее следует использовать с осторожностью.

git stash

  • Описание: Временно сохраняет изменения, которые еще не готовы к коммиту.
  • Пример: git stash

git fetch <remote>

  • Описание: Получает изменения из удаленного репозитория, не объединяя их с текущей веткой.
  • Пример: git fetch origin

git push -u <remote> <branch>

  • Описание: Отправляет изменения в указанную ветку удаленного репозитория и устанавливает связь для последующих команд push и pull.
  • Пример: git push -u origin master

git remote add <remote-name> <url>

  • Описание: Добавляет новый удаленный репозиторий под указанным именем.
  • Пример: git remote add origin https://github.com/user/repo.git

git remote -v

  • Описание: Отображает список удаленных репозиториев.
  • Пример: git remote -v

git checkout -b <new-branch>

  • Описание: Создает новую ветку и сразу переключается на нее.
  • Пример: git checkout -b new-feature

git rm <file>

  • Описание: Удаляет файл из рабочего каталога и индекса.
  • Пример: git rm example.txt

git mv <old-file> <new-file>

  • Описание: Переименовывает или перемещает файл.
  • Пример: git mv old-name.txt new-name.txt

git stash apply

  • Описание: Применяет изменения из последнего сохраненного состояния, не удаляя его из стека stash.
  • Пример: git stash apply

git stash pop

  • Описание: Применяет изменения из последнего сохраненного состояния и удаляет их из стека stash.
  • Пример: git stash pop

git stash list

  • Описание: Показывает список всех сохраненных состояний.
  • Пример: git stash list

git revert <commit>

  • Описание: Создает новый коммит, который отменяет изменения указанного коммита.
  • Пример: git revert a1b2c3d

git rebase <branch>

  • Описание: Перемещает или «перебазирует» текущую ветку на указанную.
  • Пример: git rebase master

Git rebase — это команда в Git, используемая для изменения базы (начальной точки) вашей ветки. Другими словами, она позволяет «перенести» серию коммитов на новую базу. Вот как это работает, объяснено простыми словами:

  1. Выбор новой базы: Предположим, у вас есть две ветки: master и feature. Feature ветка отделилась от master некоторое время назад, и с тех пор в master были сделаны новые коммиты. Если вы хотите, чтобы ваша feature ветка включала эти новые изменения из master, вы можете использовать rebase.
  2. Перенос коммитов: Когда вы выполняете rebase, Git берет все коммиты из вашей feature ветки, которые были сделаны после того, как она отделилась от master, и временно «сохраняет» их. Затем он обновляет feature ветку до последнего коммита master.
  3. Применение изменений: После обновления feature ветки до текущего состояния master, Git начинает заново применять каждый из сохраненных коммитов feature ветки. Это как будто вы только что создали эти коммиты на основе текущего master.
  4. Разрешение конфликтов: Если в процессе rebase возникают конфликты (например, если в master и feature ветках были изменены одни и те же части кода), Git остановит процесс и попросит вас их разрешить.
  5. Результат: В итоге ваша feature ветка будет выглядеть так, как будто вы начали ее работы прямо с последнего коммита master. Это делает историю коммитов более чистой и понятной.

git tag <tag-name>

  • Описание: Создает новый тег, указывающий на текущий коммит.
  • Пример: git tag v1.0.0

git fetch --all

  • Описание: Загружает все изменения из всех удаленных репозиториев.
  • Пример: git fetch —all

git reset <file>

  • Описание: Отменяет индексацию указанного файла, сохраняя его содержимое.
  • Пример: git reset example.txt

git config --global user.name "Your Name"

  • Описание: Устанавливает имя пользователя для всех репозиториев на текущем компьютере.
  • Пример: git config —global user.name «Your Name»
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.