Лучшие практики
Используй ветки для задач
Создавай новую ветку для каждой новой возможности или исправления ошибки, вместо того чтобы писать код прямо в ветке main.
Ветка для задачи (feature branch) — это любая ветка, созданная для работы над конкретной новой возможностью или для исправления определённой ошибки.
Сливай ветки для задач в main, только когда задача полностью готова и протестирована. Так работа остаётся изолированной, а управлять изменениями становится проще. При таком подходе ветка main всегда содержит стабильный код, готовый к релизу.
Представь: нужно добавить авторизацию через Facebook в клиентское приложение.
Плохо
- Работа над задачей начинается сразу, коммиты идут прямо в ветку
main. К концу дня накапливается несколько коммитов с частично готовой авторизацией. - Внезапно звонит начальник и просит немедленно исправить критическую ошибку в текущей системе логина и сразу же выкатить релиз.
- Само исправление элементарное, но если выпустить релиз сейчас, наполовину готовый код авторизации через Facebook тоже уйдёт в продакшен. Упс!
При работе в команде всё становится ещё хуже. Представь, что все пишут код в ветке
main: сырые наработки разных разработчиков смешиваются в кучу. В итоге невозможно понять, что готово к релизу, а что нет. Это приводит к хаосу, сломанным билдам и впустую потраченному времени. Хорошо
- Создаётся новая ветка
feature/facebook-login(или с любым другим названием), и вся работа идёт в ней. Коммиты попадают в эту ветку, аmainостаётся чистой и стабильной. - Прилетает внезапная ошибка? Просто переключаемся на
main, создаём ещё одну веткуbugfix/login-issueи правим ошибку там. После тестирования эта ветка сливается обратно вmain. Релиз выкачен, все счастливы. - Переключаемся обратно в ветку
feature/facebook-login, выполняемgit rebase, чтобы подтянуть последние изменения изmainв свою ветку, и продолжаем работу над авторизацией. Когда всё готово, сливаем ветку вmain.
Ключевые концепции
Лучшие практики
Команды Git
Основы
git initgit addgit commitgit helpВетки
git branchgit switchgit mergegit rebaseСтатус/история
git statusgit loggit diffgit showgit blamegit reflogОткат изменений
git resetgit restoregit revertgit cleangit stashУдалённые репозитории
git clonegit fetchgit pullgit pushgit remoteДругое
Файл .gitignoregit checkoutgit configgit taggit worktreeОтличная работа!
Все статьи Gitопедии открыты!