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
👇 Другие направления для подготовки тут:

👩‍💻 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
🔥 Как организовать совместную разработку в Git?

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

1. Ветвление: Каждый разработчик создает отдельную ветку для своей задачи.

git checkout -b feature/название_фичи


2. Коммиты: Четко описывают внесенные изменения.

git add .
git commit -m "Добавлена новая функциональность"


3. Слияние: После завершения работы, ветка интегрируется в основную через Pull Request.

git checkout main
git merge feature/название_фичи


4. Код-ревью: Проверка изменений коллегами перед слиянием обеспечивает качество кода.

5. Разрешение конфликтов: При возникновении конфликтов необходимо согласовать изменения между участниками.

6. Использование удаленных репозиториев: GitHub, GitLab или Bitbucket для хранения и совместной работы.

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

Добавление подмодулей позволяет интегрировать один репозиторий Git в другой, что удобно для управления зависимостями.

Шаги по добавлению подмодуля:

1. Добавление подмодуля командой:


git submodule add https://github.com/user/repo.git libs/repo


2. Фиксация изменений:


git commit -m "Добавлен подмодуль repo"


3. Клонирование репозитория с подмодулями:


git clone --recurse-submodules <URL_репозитория>


Или после клонирования:


git submodule update --init --recursive


Обновление подмодулей:


git submodule update --remote


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

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

Чтобы быстро найти нужный коммит в Git, можно использовать несколько эффективных методов:

1. Поиск по сообщению коммита:
Использование команды git log с флагом --grep позволяет искать коммиты по ключевым словам в сообщениях.

git log --grep="искомое_слово"


2. Поиск по автору:
Для фильтрации коммитов по автору применяют флаг --author.

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


3. Ограничение по дате:
Фильтрация коммитов по диапазону дат с помощью опций --since и --until.

git log --since="2024-01-01" --until="2024-12-19"


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

git log --grep="фикс бага" --author="Иван"


5. Графический просмотр:
Команда gitk предоставляет визуальный интерфейс для поиска и просмотра коммитов.

gitk


Применение этих методов позволяет эффективно навигацировать по истории репозитория и быстро находить необходимые коммиты.

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

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

Пример .gitignore:

node_modules/
build/
logs/


Для игнорирования всех папок с определённым именем в любом месте репозитория применяются шаблоны с подстановочными знаками:

**/temp/


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

git add .gitignore
git commit -m "Добавить .gitignore для игнорирования определённых папок"


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

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

Создание коммита в Git состоит из нескольких шагов:

1. Добавление изменений в индекс:
Перед созданием коммита необходимо добавить изменённые файлы в индекс с помощью команды git add. Можно добавить отдельные файлы или все изменения сразу.

git add filename
git add .


2. Создание коммита:
После добавления изменений в индекс используется команда git commit с описанием изменений через флаг -m.

git commit -m "Описание внесённых изменений"


3. Проверка коммита:
Для просмотра истории коммитов применяется команда git log.

git log


Дополнительные опции:

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

git commit --amend


Можно добавлять и коммитить несколько файлов одновременно.

git add file1 file2
git commit -m "Добавлены файлы file1 и file2"


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

Для удаления ветки в Git различают локальные и удалённые ветки.

1. Удаление локальной ветки:

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

git branch -d branch_name


Если ветка не слита и требуется принудительное удаление:

git branch -D branch_name


2. Удаление удалённой ветки:

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

git push origin --delete branch_name


Или альтернативный синтаксис:

git push origin :branch_name


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

Git предоставляет команды stash и commit для управления изменениями, но они служат разным целям.

git commit:
Фиксирует изменения в историю репозитория. Подходит для сохранения завершённых и логически связанных изменений.

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


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

git stash
git stash apply


Основные отличия:
- commit создаёт постоянную запись в истории репозитория.
- stash временно сохраняет изменения без добавления их в историю.

Использование зависит от необходимости сохранения изменений: commit для завершённых задач, stash для временного скрытия незаконченного кода.

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

Для отображения всех веток в репозитории Git используются следующие команды:

1. Отображение локальных веток:

git branch


2. Отображение всех веток (локальных и удалённых):

git branch -a


3. Отображение только удалённых веток:

git branch -r


Подробная информация о ветках:

git branch -vv


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

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

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

1. Получение последних изменений:

Извлечение обновлений из удалённого репозитория без автоматического слияния.

git fetch origin


2. Интеграция изменений:

Объединение извлечённых изменений с локальной веткой. Можно использовать мердж или ребейз.


git merge origin/main



git rebase origin/main


3. Отправка локальных коммитов:

Загрузка локальных изменений в удалённый репозиторий.

git push origin main


Альтернативный подход:

Использование команды git pull, которая объединяет шаги извлечения и слияния.

git pull origin main


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

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

Git предлагает ряд преимуществ по сравнению с CVS:

1. Распределённая архитектура:
Каждый разработчик имеет полную копию репозитория, включая всю историю изменений. Это обеспечивает независимость работы и повышает устойчивость к сбоям сервера.

2. Мощные возможности ветвления и слияния:
Git облегчает создание, управление и слияние веток, что позволяет эффективно работать над параллельными задачами и экспериментальными функциями.

3. Высокая производительность:
Большинство операций выполняются локально, что значительно ускоряет работу по сравнению с CVS, где многие действия зависят от сетевых запросов.

4. Надёжность и целостность данных:
Git использует SHA-1 хеши для отслеживания всех изменений, что обеспечивает защиту от потери данных и гарантирует целостность истории репозитория.

5. Поддержка снимков (snapshots):
Вместо хранения только разниц, Git сохраняет полные снимки состояния файлов на каждом этапе, что упрощает восстановление и анализ изменений.

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

Эти особенности делают Git более гибким, надёжным и эффективным инструментом для управления версиями по сравнению с CVS.

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

Для создания бэкапа репозитория Git можно использовать несколько методов:

1. Клонирование репозитория:
Создание полной копии репозитория на локальном компьютере или другом сервере.

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


2. Использование git bundle:
Создание одного файла, содержащего весь репозиторий, что удобно для переноса или хранения.

git bundle create repository.bundle --all


Восстановление из бандла:

git clone repository.bundle -b main repository


3. Архивирование директории репозитория:
Сжатие папки с репозиторием для хранения в архиве.

tar -czvf repository_backup.tar.gz /path/to/repository


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

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

Пример:

# Игнорировать все файлы с расширением .log
*.log

# Игнорировать конкретный файл
secret.txt

# Игнорировать все файлы с именем temp в любой директории
**/temp


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

Для отмены последнего коммита в Git используются несколько методов в зависимости от ситуации.

1. Отмена коммита, оставляя изменения в рабочей директории:

git reset --soft HEAD~1


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

2. Отмена коммита и индекса, сохраняя изменения в файлах:

git reset --mixed HEAD~1


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

3. Полная отмена коммита и изменений:

git reset --hard HEAD~1


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

4. Отмена опубликованного коммита:
Если коммит уже отправлен в удалённый репозиторий, лучше использовать git revert для создания обратного коммита:

git revert HEAD


Это безопасный способ отменить изменения, не изменяя историю репозитория.

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

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

Git предоставляет команды fetch и pull для обновления локального репозитория, однако они выполняют разные задачи.

git fetch:
Извлекает последние изменения из удалённого репозитория без автоматического слияния с текущей веткой.

git fetch origin


После выполнения fetch можно просмотреть изменения и решить, как их интегрировать:

git merge origin/main


git pull:
Комбинирует fetch и merge в одну операцию, автоматически интегрируя изменения в текущую ветку.

git pull origin main


Основные отличия:
- git fetch сохраняет изменения в удалённых ветках, не изменяя рабочую директорию. Подходит для просмотра обновлений перед слиянием.
- git pull автоматически сливает изменения, что упрощает процесс, но может привести к конфликтам без предварительного просмотра.

Выбор команды зависит от необходимости контроля над процессом интеграции изменений.

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