Ответ
Основные команды Git для ежедневной работы:
Начало работы и базовые операции:
git init— инициализирует новый репозиторий.git clone <url>— клонирует удаленный репозиторий.git add <file>илиgit add .— добавляет изменения в индекс (staging area).git commit -m "сообщение"— фиксирует изменения из индекса в репозиторий.git status— показывает состояние рабочей директории и индекса.
Ветвление и слияние:
git branch— показывает список веток.git checkout -b <branch_name>— создает новую ветку и переключается на нее.git checkout <branch_name>— переключается на существующую ветку.git merge <branch_name>— сливает указанную ветку в текущую.git rebase <branch_name>— перебазирует текущую ветку на указанную (изменяет историю).
Синхронизация с удаленным репозиторием:
git push origin <branch_name>— отправляет локальные коммиты в удаленную ветку.git pull origin <branch_name>— забирает изменения из удаленной ветки и сливает с текущей ( =git fetch+git merge).git fetch origin— забирает изменения из удаленного репозитория, но не сливает их.
Просмотр истории и отмена изменений:
git log --oneline --graph— компактный вывод истории с визуализацией ветвления.git diff— показывает неиндексированные изменения.git diff --staged— показывает изменения, добавленные в индекс.git restore <file>— отменяет изменения в файле (до индексации).git reset --soft HEAD~1— отменяет последний коммит, оставляя изменения проиндексированными.
Типовой рабочий процесс:
# Клонирование репозитория
git clone https://github.com/example/project.git
cd project
# Создание ветки для новой функциональности
git checkout -b feature/new-login
# Внесение изменений, добавление и коммит
git add .
git commit -m "Add new login form"
# Отправка ветки на сервер
git push origin feature/new-login
# Далее создается Pull Request (Merge Request) в интерфейсе GitHub/GitLab Ответ 18+ 🔞
А, ну вот, опять этот ваш Гит, ёпта! Сидит народ, как мартышлюшки, тыкает в консоль, а нихуя не понимает, что творит. Слушай, давай я тебе по-человечьи, без этих заумных мануалов, объясню, что там к чему. Главное — не перепутай, а то потом будешь, как Герасим, с мешком в руках стоять и «Му-му» мычать.
С чего начинается этот цирк:
git init— это ты взял пустую папку и крикнул: «Так, блядь, тут теперь священное место для кода будет!». Всё, репа создана.git clone <url>— это ты пришёл к соседу, у которого уже всё готово, и спиздил у него всю папку целиком. Удобно, нехуй делать.git add .— вот ты накодил какую-то хуйню. Этой командой ты говоришь: «Так, всё, что я тут наворотил, я готов отдать на суд истории. Запоминай».git commit -m "сообщение"— а это ты уже официально ставишь печать: «Всё, блядь, я это сделал. Вот причина, почему я это сделал». Пиши нормально, а не «чё-то поправил», а то потом сам себя проклянёшь.git status— это твой главный доносчик. Он тебе шепчет: «Э, чувак, блядь, тут у тебя файлы болтаются, не добавлены, а тут вот коммитнуть можно». Спрашивай его почаще, доверия ебать ноль к себе самому.
Ветки, или как не перепихнуться в одной куче:
git branch— смотришь, какие у тебя вообще сценарии развития событий (ветки) есть. Как в «Игре престолов», только с кодом.git checkout -b feature/new-login— это ты решил: «Хуй с ним, с основной линией, я тут свою отдельную авантюру замучу». Создал новую ветку и сразу на неё перепрыгнул.git checkout main— это когда с авантюры надоело, и ты вернулся в стабильную, скучную реальность.git merge feature/new-login— вот ты свою авантюру (ветку) довёл до ума и теперь пытаешься впихнуть её обратно в основную ветку. Может пройти гладко, а может начаться пиздец с конфликтами.git rebase main— это для смелых. Ты берёшь свою ветку и подтираешь ей историю, пересаживая её на свежий «ствол». Красиво, но если накосячишь — история изменится, и все, кто с тобой работал, взвоют.
Общение с миром (или с сервером):
git push origin feature/new-login— это ты выкрикиваешь в окно: «Эй, мир, смотрите, что я сделал! Забирайте мою ветку!».git pull origin main— это ты выглядываешь в окно и забираешь то, что накричали тебе другие. Автоматом пытается склеить с твоим.git fetch origin— а это ты просто выглянул, посмотрел, что там нового накричали, но ничего к себе в дом пока не тащишь. Просто разведка.
Когда всё пошло по пизде и надо откатываться:
git log --oneline --graph— твоя машина времени. Смотришь, кто, когда и какую дичь коммитил. График — чтобы понять, кто в кого вливался.git diff— «Ну-ка, покажи мне, блядь, что я тут такого страшного натворил, прежде чем я этоaddну».git restore <file>— «Всё, я передумал! Откати этот файл к тому, каким он был в последнем сохранённом состоянии!». Спасательная операция.git reset --soft HEAD~1— «Э-э-э, последний коммит был ошибкой, я мудак. Давай я его отменю, но изменения пусть останутся готовыми к новому коммиту». Как стереть надпись на заборе, но краску оставить.
И как это всё выглядит в жизни, без пафоса:
# Украл проект с гитхаба (ничего, все так делают)
git clone https://github.com/example/project.git
cd project
# Отжался от основной ветки, чтобы твои эксперименты всех не сломали
git checkout -b feature/new-login
# Написал какую-то дичь, добавил её и подписался под ней
git add .
git commit -m "Add new login form (не бейте, я проверю завтра)"
# Высунул свою ветку на всеобщее обозрение и осмеяние
git push origin feature/new-login
# А дальше идёшь на GitHub/GitLab и создаёшь Pull Request. Это типа: «Ребята, посмотрите на мой код, если не гонит, примите».
Вот и вся магия. Главное — не бздеть и делать commitы часто, мелко и с понятными сообщениями. А то потом будешь как тот мудак, который месяц не коммитил, а потом пытается понять, какая из тысячи изменённых строк всё сломала. Удачи, волнение ебать!