Структурированное руководство по основным командам и концепциям Git, а также практический мини-тест для самопроверки перед собеседованием на позицию QA Automation Engineer.
На собеседовании важно не только знать команды, но и понимать, как Git работает внутри:
git init – инициализация нового репозитория.git clone <url> – копирование удаленного репозитория на локальную машину.git status – показывает состояние рабочей директории и индекса (какие файлы изменены, не отслеживаются или готовы к коммиту).git add <file> или git add . – добавление изменений в Staging Area.git commit -m "message" – сохранение изменений из индекса в локальный репозиторий.git fetch – скачивает изменения из удаленного репозитория, но не объединяет их с твоей текущей веткой.git pull – скачивает изменения и сразу делает merge в текущую ветку (git pull = git fetch + git merge).git push – отправляет твои локальные коммиты в удаленный репозиторий.git branch – показать список локальных веток.git branch <name> – создать новую ветку.git checkout <name> или git switch <name> – переключиться на другую ветку.git merge <branch> – объединить указанную ветку в текущую.git rebase <branch> – переписать историю текущей ветки, "подставив" её изменения поверх указанной ветки (делает историю линейной).git restore <file> или git checkout -- <file> – отменить изменения в файле до последнего коммита (если файл не в индексе).git reset --soft HEAD~1 – отменяет последний коммит, но оставляет изменения в файлах и в индексе.git reset --hard HEAD~1 – отменяет последний коммит и полностью удаляет изменения в файлах (осторожно!).git revert <commit_hash> – создает новый коммит, который отменяет изменения указанного коммита (безопасно для общих веток, так как не переписывает историю).git stash и git stash pop – временно отложить незакоммиченные изменения, чтобы переключить ветку, и вернуть их позже.git log – история коммитов (полезны флаги: --oneline, --graph, --all).git diff – показывает различия между файлами, коммитами или ветками.git blame <file> – показывает, кто и в каком коммите изменил каждую строку файла.В чем разница между git merge и git rebase?
В чем разница между git pull и git fetch?
git fetch только загружает новые данные из удаленного репозитория, не меняя твои рабочие файлы.git pull делает fetch, а затем сразу пытается слить (merge) эти изменения в твою текущую ветку.Как отменить последний коммит, если ты уже сделал git push?
git revert <hash_коммита> и затем git push. Это создаст новый коммит с обратными изменениями, не ломая историю для коллег.Что такое merge conflict и как его решить?
<<<<<<<, =======, >>>>>>>), сделать git add <file> и git commit.Зачем нужен git stash?
git stash pop или git stash apply.Учитывая твой запрос на практический опыт, выдели 15 минут, чтобы выполнить этот сценарий в терминале. Это закрепит знания лучше любой теории:
mkdir git-practice && cd git-practice && git initecho "Hello" > test.txtgit add test.txt → git commit -m "Initial commit"git checkout -b feature-branchecho "World" >> test.txt и закоммить: git commit -am "Add World"git checkout mainecho "Git" >> test.txt и закоммить: git commit -am "Add Git"git merge feature-branch → получишь конфликт.test.txt, отредактируй его, оставив нужный вариант, затем: git add test.txt → git commit -m "Resolve conflict".