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

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

Frontend - @frontview_it
Backend - @frontview_backend
Все IT вакансии - @frontview_all_vacancies
Download Telegram
Git универсален благодаря своей распределенной архитектуре, которая позволяет работать с репозиториями локально без необходимости постоянного подключения к серверу. Это обеспечивает гибкость в управлении версиями, независимо от масштаба проекта или количества участников.

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
Чтобы удалить файл из последнего коммита, можно использовать команду git reset или git rm. Вот два способа:

1. Использование git reset:
Если файл уже был добавлен в коммит, но нужно его удалить, можно сделать мягкий сброс (soft reset) и пересоздать коммит:

git reset HEAD~1
git reset <file> # Убрать файл из индекса
git commit -c ORIG_HEAD


Этот способ сохраняет изменения в рабочей директории.

2. Использование git rm:
Если файл нужно полностью удалить из истории, можно использовать git rm:

git rm --cached <file> # Удалить файл из индекса, но оставить в рабочей директории
git commit --amend # Перезаписать последний коммит


После этого файл будет исключен из коммита.

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

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Объединение веток выполняется с помощью команды git merge. Для этого необходимо переключиться на ветку, в которую нужно внести изменения, и выполнить команду git merge <имя_ветки>, чтобы объединить указанную ветку с текущей. Если требуется сохранить историю изменений в виде линейной последовательности, можно использовать git rebase вместо git merge.

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
▶️Конфликты возникают, когда изменения в одной ветке противоречат изменениям в другой. Для их разрешения можно использовать следующие подходы:

1. Ручное разреш
ение: Отредактировать конфликтующие файлы, оставив нужные изменения, и выполнить git add для фиксации.


# После редактирования файла
git add <conflicted_file>
git commit


2. Использование инструментов: Воспользоваться merge-инструментами, такими как git mergetool, для визуального разрешения конфликтов.

3. Принятие изменений одной из веток: Использовать git checkout --ours или git checkout --theirs для выбора изменений из текущей или другой ветки соответственно.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
Конфликты при слиянии веток отображаются автоматически, если Git не может автоматически объединить изменения. Для просмотра конфликтующих файлов можно использовать команду git status, которая покажет файлы, требующие ручного разрешения.

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
✏️ Чтобы игнорировать файлы по расширению, нужно добавить соответствующие правила в файл .gitignore. Для этого используется синтаксис с символом *, который обозначает любое имя файла.

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


*.log
*.tmp


Эти правила указывают Git игнорировать все файлы, заканчивающиеся на .log и .tmp, в любой директории проекта. Файл .gitignore должен находиться в корне репозитория.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
Pull Request (PR) — это запрос на внесение изменений в репозиторий. Он позволяет разработчикам предложить свои изменения, которые затем могут быть проверены и влиты в основную ветку проекта.

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
▶️Для работы с репозиториями через SSH необходимо сгенерировать SSH-ключи и добавить публичный ключ в настройки аккаунта на GitHub, GitLab или другом хостинге. После этого можно клонировать репозитории и выполнять операции, используя SSH-URL.


git clone git@github.com:username/repository.git


SSH обеспечивает безопасное соединение без необходимости ввода логина и пароля при каждом взаимодействии с удаленным репозиторием. Это особенно полезно для автоматизации и CI/CD.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
Чтобы изменить последний коммит, используется команда git commit --amend. Она позволяет изменить сообщение коммита или добавить новые изменения в последний коммит, не создавая новый.

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63
🔴Интерактивный режим git rebase позволяет изменять историю коммитов, объединять, редактировать или переупорядочивать их. Для запуска используется команда:


git rebase -i <commit_hash>


После выполнения команды откроется редактор со списком коммитов. Каждый коммит можно изменить с помощью команд:
- pick — оставить коммит без изменений.
- reword — изменить сообщение коммита.
- edit — остановиться для внесения изменений в коммит.
- squash — объединить коммит с предыдущим.
- drop — удалить коммит.

После сохранения изменений Git применяет их последовательно. Интерактивный rebase полезен для очистки истории перед слиянием веток.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Для удаления локальной ветки используется команда git branch -d <branch_name>, а для принудительного удаления — git branch -D <branch_name>. Чтобы удалить ветку на удаленном репозитории, выполните git push origin --delete <branch_name>.

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
🟢Для создания коммита в Git используется команда git commit. Перед этим необходимо добавить изменения в индекс (staging area) с помощью git add. Пример:


git add .
git commit -m "Описание изменений"


Команда git add . добавляет все изменения в текущей директории в индекс. Если нужно добавить только конкретные файлы, вместо . указываются их имена.

Флаг -m позволяет сразу добавить сообщение коммита. Если его не указать, откроется текстовый редактор для ввода сообщения.

Для более короткого варианта, можно использовать git commit -am "Описание изменений", чтобы добавить изменения и создать коммит одной командой. Однако это работает только для уже отслеживаемых файлов.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
👉 Команда git fetch используется для получения изменений из удаленного репозитория без их автоматического слияния с текущей рабочей веткой. Она загружает все новые коммиты, ветки и теги, но не изменяет рабочую директорию или текущую ветку.

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


git fetch origin


Эта команда загружает изменения из удаленного репозитория origin. После выполнения git fetch можно вручную проверить изменения и решить, как их интегрировать, например, с помощью git merge или git rebase.

Основное отличие от git pull в том, что git fetch только загружает данные, а git pull сразу объединяет их с текущей веткой. Это делает git fetch более безопасным, так как позволяет предварительно изучить изменения перед слиянием.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
git bisect — это инструмент для бинарного поиска коммита, который внес ошибку в код. Он автоматически проверяет коммиты, начиная с известного рабочего состояния и заканчивая нерабочим, чтобы найти точное место появления проблемы.


git bisect start
git bisect bad # Указать текущий коммит как нерабочий
git bisect good <commit_hash> # Указать коммит, где все работало


После каждого шага git bisect перемещается на середину диапазона, пока не найдет проблемный коммит.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
git revert создает новый коммит, который отменяет изменения, внесенные указанным коммитом. Это безопасный способ отката, так как он не изменяет историю, а добавляет новый коммит с обратными изменениями.


git revert <commit_hash> # Создает коммит, отменяющий изменения


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


git revert <oldest_commit_hash>..<latest_commit_hash>


Этот подход полезен для исправления ошибок без перезаписи истории.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
Публичные репозитории доступны для просмотра и клонирования всем пользователям, что полезно для открытых проектов. Приватные репозитории ограничены доступом и используются для хранения закрытого кода, доступного только определенным пользователям или командам.

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
😎Настройка пользовательских данных в Git необходима для идентификации автора коммитов. Это делается с помощью команд git config.

Установка имени и email:


git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"


Эти данные будут использоваться для всех коммитов в системе.

Проверка текущих настроек:


git config --list


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

Настройки сохраняются в файле конфигурации Git и могут быть изменены в любой момент.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
👉 Создание нового тега в Git — простая, но важная задача для управления версиями. Теги используются для отметки значимых моментов в истории проекта, например, релизов.

Чтобы создать новый тег, используется команда git tag. Например, для создания легковесного тега:


git tag v1.0


Этот тег будет указывать на текущий коммит. Для создания аннотированного тега, который содержит дополнительную информацию (автор, дата, сообщение), используется флаг -a:


git tag -a v1.0 -m "Релиз версии 1.0"


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


git push origin v1.0


Теги помогают быстро находить важные точки в истории проекта и упрощают навигацию по коммитам.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Staging area (область подготовки) — это промежуточная область в Git, где фиксируются изменения перед тем, как они будут закоммичены. Она позволяет выбирать конкретные файлы или части файлов для включения в следующий коммит, что обеспечивает гибкость в управлении изменениями.


git add file.txt # Добавляет file.txt в staging area
git status # Показывает изменения в staging area
git commit -m "Add file.txt" # Создает коммит из изменений в staging area


Staging area помогает организовать изменения, разделяя их на логические блоки. Это особенно полезно при работе над несколькими задачами одновременно, чтобы не смешивать изменения в одном коммите.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🔵Форк — это полная копия репозитория, созданная в рамках платформы (например, GitHub или GitLab). После форка репозиторий становится независимым, и изменения в нем не влияют на оригинальный проект.

Основные особенности:
- Форк используется для внесения изменений без прямого доступа к исходному репозиторию.
- Позволяет предложить правки через Pull Request (PR) в оригинальный проект.
- Часто применяется в open-source разработке.

Как создать форк:
1. На GitHub/GitLab нажать кнопку Fork в интерфейсе репозитория.
2. Склонировать свою версию на локальную машину:

git clone https://github.com/your-username/repository.git


Форк отличается от ветки (branch) тем, что существует как отдельный репозиторий, а не внутри исходного проекта.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6