Git собеседования – Telegram
Git собеседования
612 subscribers
98 photos
183 links
Подготовка к собеседованиям в IT

Еще больше разобранных вопросов для подготовки на сайте https://frontview-it.ru

Frontend - @frontview_it
Backend - @frontview_backend
Все IT вакансии - @frontview_all_vacancies
Download Telegram
🔥 Что делает команда git status?

Команда git status выводит текущий статус рабочей директории и индекса, показывая изменения, внесённые с последнего коммита.

Она отображает:
- Изменённые файлы, готовые к коммиту.
- Файлы, изменённые, но ещё не добавленные в индекс.
- Неотслеживаемые файлы, которые не находятся под контролем Git.

Использование git status помогает понять, какие изменения произошли в проекте, какие файлы необходимо добавить или закоммитить, а также избежать случайного включения нежелательных файлов в историю версий.

Пример вывода:

On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: file1.py

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
modified: file2.py

Untracked files:
(use "git add <file>..." to include in what will be committed)
file3.py


Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
🔥 Как переключиться на другую ветку?

Для переключения на другую ветку в Git используются команды git checkout или git switch.

Команда git checkout позволяет переключиться на существующую ветку:

git checkout имя_ветки


В последних версиях Git рекомендуется использовать git switch, которая специально предназначена для смены веток:

git switch имя_ветки


Если необходима создание новой ветки и одновременное переключение на неё, можно воспользоваться следующими командами:

С git checkout:

git checkout -b новая_ветка


С git switch:

git switch -c новая_ветка


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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52
🔥 Что такое "origin" в Git?

В Git "origin" является стандартным именем для удалённого репозитория, с которым связан локальный проект. Когда репозиторий клонируется, Git автоматически назначает удалённый адрес как "origin". Это имя упрощает ссылки на удалённый сервер при выполнении команд, таких как git push или git pull.

Использование "origin" позволяет легко обращаться к основному источнику кода, обеспечивая согласованность при работе в команде. Например, команда git push origin main отправляет изменения из локальной ветки main в соответствующую ветку на удалённом репозитории "origin".

При необходимости можно добавить дополнительные удалённые репозитории с другими именами, например, git remote add upstream https://github.com/другой_репозиторий.git. Это полезно для управления множественными источниками кода или интеграции изменений из разных проектов.

Таким образом, "origin" служит удобным обозначением основного удалённого репозитория, облегчая управление и синхронизацию изменений между локальной и удалённой версиями проекта.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
🔥 Что делать при потере коммита?

При потере коммита в Git можно восстановить данные с помощью нескольких методов. Один из основных инструментов — команда git reflog, которая отображает историю всех действий с HEAD. С её помощью можно найти хеш потерянного коммита.

После идентификации нужного коммита можно вернуть его с помощью команды:

git checkout <хеш_коммита>


Или создать новую ветку на основе этого коммита:

git branch восстановленная_ветка <хеш_коммита>


Также возможно использование команды git reset для смещения текущей ветки на нужный коммит:

git reset --hard <хеш_коммита>


Важно помнить, что команды, изменяющие историю (например, reset --hard), могут привести к потере данных, если не использовать их осторожно. Регулярное использование git reflog и создание резервных веток помогает предотвратить необратимые потери.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53
🔥 Как Git обрабатывает версии файлов?

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

Каждый файл в репозитории представлен объектом blob, который идентифицируется уникальным SHA-1 хешем. Когда файл изменяется и добавляется в индекс с помощью git add, Git сохраняет новый blob с обновленным содержимым. Затем коммит фиксирует состояние всех файлов, связывая их с деревьями (tree) и предыдущими коммитами, образуя цепочку изменений.

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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
🔥 Как сделать pull request на GitHub?

Создание pull request на GitHub включает несколько этапов.

Сначала необходимо создать и переключиться на новую ветку в локальном репозитории:

git checkout -b имя_ветки


Внести необходимые изменения, закоммитить их и отправить ветку на GitHub:

git add .
git commit -m "Описание изменений"
git push origin имя_ветки


После этого перейти на страницу репозитория на GitHub. Там появится уведомление о недавно отправленной ветке с предложением создать pull request. Нажать кнопку "Compare & pull request".

В открывшейся форме заполнить заголовок и описание изменений, выбрать базовую и сравниваемую ветки. При необходимости добавить рецензентов или метки. После проверки нажать "Create pull request".

Теперь другие участники проекта могут провести ревью кода. После одобрения pull request можно слить с основной веткой.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72🔥1
🔥 Как инициализировать новый репозиторий?

Для инициализации нового репозитория Git необходимо выполнить несколько шагов.

1. Создать каталог проекта (если он еще не существует) и перейти в него:

mkdir имя_проекта
cd имя_проекта


2. Инициализировать репозиторий командой:

git init

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

3. Добавить файлы в репозиторий:

git add .

Команда git add . добавляет все файлы в текущем каталоге для отслеживания.

4. Сделать первый коммит:

git commit -m "Первый коммит"

Эта команда сохраняет снимок текущего состояния проекта с сообщением коммита.

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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
🔥 Чем отличается "feature" ветка от "main"?

В Git основная ветка (main) служит для хранения стабильной версии проекта, готовой к релизу. Она отражает текущее состояние продукта, которое можно развернуть в producción.

Ветка feature предназначена для разработки новой функциональности. Каждая новая фича разрабатывается в отдельной ветке, что позволяет изолировать изменения и не нарушать стабильность основной ветки. После завершения разработки фичи, её изменения сливаются в main.

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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1
🔥 Как работает команда git checkout?

Команда git checkout используется для переключения между ветками или восстановления файлов из определённого коммита.

Чтобы переключиться на существующую ветку следует выполнить:

git checkout <имя_ветки>


Для создания новой ветки и перехода на неё одновременно применяется флаг -b:

git checkout -b <новая_ветка>


Также git checkout позволяет отменить изменения в файлах, вернув их к состоянию последнего коммита:

git checkout -- <путь_к_файлу>


Важно отметить, что в последних версиях для некоторых операций рекомендуется использовать команды git switch и git restore, которые предназначены для более специфичных задач и улучшают удобство работы с ветками и файлами.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
🔥 Как слить изменения из одной ветки в другую?

Для слияния изменений из одной ветки в другую в Git необходимо выполнить несколько шагов.

Сначала переключиться на целевую ветку, куда будут вливаться изменения:

git checkout main


Затем выполнить команду слияния с исходной веткой:

git merge feature-branch


Если возникнут конфликты, их нужно вручную разрешить в затронутых файлах. После разрешения конфликтов завершить слияние:

git add .
git commit


Наконец, отправить обновленную ветку в удаленный репозиторий:

git push origin main


Этот процесс позволяет интегрировать изменения из одной ветки в другую, сохраняя историю коммитов.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🔥 Как создать файл .gitignore?

Создание файла .gitignore позволяет исключить из отслеживания Git определенные файлы и директории, такие как временные файлы, зависимости или конфиденциальную информацию.

1. В корневой папке репозитория создать файл с именем .gitignore.
2. Открыть файл в текстовом редакторе и добавить шаблоны для игнорируемых элементов. Примеры:

# Игнорировать лог-файлы
*.log

# Игнорировать директорию зависимостей
node_modules/

# Игнорировать файлы конфигурации
.env

3. Сохранить изменения.
4. Добавить файл в индекс Git командой:

git add .gitignore

5. Сделать коммит:

git commit -m "Добавлен .gitignore"


Правильно настроенный .gitignore помогает поддерживать чистоту репозитория и избегать случайного коммита ненужных файлов.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🔥 Чем Git отличается от SVN?

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

Тип системы
SVN (Subversion) — централизованная система, где существует единый репозиторий на сервере. Все изменения фиксируются и извлекаются из этого центрального места.
Git — распределенная система, каждая копия репозитория содержит полную историю проекта, что позволяет работать автономно.

Работа с ветками
В SVN создание и слияние веток может быть сложным и ресурсоемким процессом.
Git предлагает легковесные ветки, что облегчает их создание, переключение и слияние, способствуя более гибкой разработке.

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

Хранение данных
Git хранит данные как снимки файлов в определенные моменты времени, что обеспечивает высокую скорость и эффективность.
SVN использует последовательность изменений (диффов), требующих дополнительного времени для восстановления версии.

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

Выбор между Git и SVN зависит от требований проекта, однако Git благодаря своей гибкости и производительности стал более популярным в современных разработках.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🔥 Какие инструменты для визуализации Git существуют?

Существует несколько популярных инструментов для визуализации Git:

1. Gitk
Стандартный инструмент, поставляемый с Git. Позволяет просматривать историю коммитов, ветки и слияния.

2. Sourcetree
Графический клиент от Atlassian. Поддерживает работу с Git и Mercurial, предоставляет удобный интерфейс для управления репозиториями.

3. GitKraken
Кроссплатформенный инструмент с современным интерфейсом. Включает функции визуализации веток, слияний и управления конфликтами.

4. Visual Studio Code
Редактор с встроенной поддержкой Git. Позволяет видеть изменения, историю коммитов и управлять ветками прямо из IDE.

5. TortoiseGit
Интеграция Git с проводником Windows. Удобен для пользователей Windows, позволяет выполнять операции Git через контекстное меню.

6. Git Extensions
Расширение для Windows с графическим интерфейсом. Поддерживает визуализацию истории, веток и интеграцию с другими инструментами.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
🔥 Что такое staging area?

Staging area (иногда называемая индексом) в Git — это промежуточная область между рабочей директорией и репозиторием, где подготавливаются изменения перед фиксацией (commit).

Использование staging area позволяет выбрать, какие именно изменения будут включены в следующий коммит. Это особенно полезно для группировки связанных изменений и исключения временных или нерелевантных файлов.

Основные команды для работы со staging area:

- Добавить файл в staging area:

git add filename


- Добавить все измененные файлы:

git add .


- Просмотреть статус изменений:

git status


После добавления изменений в staging area можно создать коммит:

git commit -m "Сообщение коммита"


Staging area обеспечивает гибкость и контроль над тем, какие изменения попадают в репозиторий, способствуя более аккуратной и осознанной истории проекта.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
👇 Другие направления для подготовки тут:

👩‍💻 Frontend
👩‍💻 Python
👩‍💻 Go
👩‍💻 Java
👩‍💻 C/C++
👩‍💻 C#
👩‍💻 PHP
👩‍💻 QA
🖥 SQL
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Что такое удалённый репозиторий?

Удалённый репозиторий — это версия проекта, размещённая на сервере и доступная по сети. Он позволяет нескольким разработчикам совместно работать над кодом.

Основные команды для работы с удалённым репозиторием:


git clone https://github.com/user/repo.git
git remote add origin https://github.com/user/repo.git
git push origin main
git pull origin main


Использование удалённых репозиториев упрощает процесс разработки, обеспечивает контроль версий и облегчает совместную работу над проектами.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🔥 Как игнорировать файлы по расширению?

Чтобы игнорировать файлы по расширению, используется файл .gitignore. В нём можно указать шаблоны, соответствующие нежелательным файлам.

Пример для игнорирования всех файлов с расширением .log и .tmp:


*.log
*.tmp


Это предотвратит отслеживание Git таких файлов и их добавление в репозиторий при выполнении команды git add.

Также можно игнорировать файлы в определённых директориях. Например, чтобы игнорировать все .env файлы в проекте:


**/*.env


После обновления .gitignore следует удалить из индекса уже отслеживаемые файлы, если это необходимо:


git rm --cached *.log
git commit -m "Удалены log файлы из индекса"


Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
🔥 Как откатить изменения, сделанные в файле?

Чтобы откатить изменения, сделанные в файле, используются различные команды Git в зависимости от состояния изменений.

Если изменения не были добавлены в индекс:


git restore <имя_файла>


Или


git checkout -- <имя_файла>


Если изменения были добавлены в индекс, но не закоммичены:


git restore --staged <имя_файла>
git restore <имя_файла>


Для отката изменений, уже закоммиченных в репозиторий, можно использовать:


git revert <коммит>


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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112
🔥 Как удалить ветку?

Удаление ветки в Git может быть выполнено как локально, так и в удаленном репозитории.

Для удаления локальной ветки используется команда:


git branch -d имя_ветки


Если ветка содержит незавершенные изменения, можно использовать принудительное удаление:


git branch -D имя_ветки


Для удаления ветки в удаленном репозитории применяется команда:


git push origin --delete имя_ветки


Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥21
🔥 Что такое git rebase и в чем его отличия от git merge?

Git rebase — это команда, позволяющая перенести серию коммитов на новую базу, создавая более линейную историю изменений. В отличие от git merge, который объединяет ветки путем создания нового merge-коммита, rebase переписывает историю, применяя коммиты по одному на основе выбранной базы.

Пример использования git rebase:


git checkout feature
git rebase main


Это переместит серию коммитов из ветки feature поверх текущей ветки main. Основные отличия:

- История: merge сохраняет информацию о слиянии веток, тогда как rebase делает историю более чистой и линейной.
- Конфликты: При rebase конфликты решаются для каждого коммита отдельно, что может быть сложнее.
- Использование: rebase рекомендуется использовать для локальных веток, чтобы избежать конфликтов в общей истории проекта.

Правильное применение rebase помогает поддерживать понятную и упорядоченную историю коммитов.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122
🔥 Как просмотреть историю коммитов?

Просмотр истории коммитов в Git осуществляется с помощью команды git log, которая отображает последовательность всех коммитов в репозитории.

Для базового просмотра используется:


git log


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

Для более компактного отображения истории можно использовать опцию --oneline:


git log --oneline


Это покажет каждый коммит в одной строке, отображая сокращенный хеш и сообщение.

Для визуализации веток и слияний применяется комбинация опций --graph, --decorate и --oneline:


git log --graph --decorate --oneline


Эта команда создаст графическое представление истории коммитов с указанием веток и тегов.

Дополнительно можно использовать фильтры, например, просмотреть коммиты определенного автора:


git log --author="Имя автора"


Использование различных опций git log позволяет эффективно анализировать историю изменений.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥21