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 merge объединяет изменения из одной ветки в другую, создавая новый коммит слияния. git rebase перемещает коммиты одной ветки на вершину другой, переписывая историю и создавая линейную последовательность изменений.

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Для работы с несколькими удаленными репозиториями можно добавить дополнительные remote-источники. Например, чтобы добавить новый remote:


git remote add upstream https://github.com/user/repo.git


Просмотреть список всех удаленных репозиториев:


git remote -v


Для получения изменений из конкретного remote:


git fetch upstream


Чтобы отправить изменения в определенный remote:


git push origin main


Удалить ненужный remote:


git remote remove upstream


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

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
Чтобы проверить, действуют ли правила .gitignore, можно использовать команду git status. Если файлы, указанные в .gitignore, не отображаются в выводе, значит, правила применяются корректно. Для более детальной проверки можно использовать git check-ignore -v <file>, чтобы убедиться, что конкретный файл игнорируется.

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

1. Найти конфликты: После попытки слияния Git отметит конфликтующие участки в файлах. Они выглядят так:


<<<<<<< HEAD
изменения из текущей ветки
=======
изменения из ветки, которую сливают
>>>>>>> branch-name


2. Редактировать файл: Нужно выбрать, какие изменения оставить, или объединить их вручную. Удалить маркеры <<<<<<<, =======, >>>>>>>.

3. Добавить изменения в индекс: После редактирования файл нужно добавить в индекс:


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


4. Завершить слияние: После разрешения всех конфликтов завершить слияние командой:


git commit


Если нужно отменить слияние и начать заново, используется команда git merge --abort.

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

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82
Хэш (SHA) — это уникальный идентификатор, который генерируется для каждого коммита, файла или объекта в репозитории. Он представляет собой 40-символьную строку, созданную на основе содержимого объекта, и обеспечивает целостность данных, позволяя отслеживать изменения.

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

1. Переключиться на целевую ветку:


git checkout target-branch


2. Выполнить cherry-pick: Указать хэш коммита, который нужно перенести:


git cherry-pick <commit-hash>


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


git add <file>
git cherry-pick --continue


Если нужно отменить cherry-pick, используется команда git cherry-pick --abort.

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

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
➡️ git blame используется для просмотра истории изменений конкретного файла с указанием автора и коммита, в котором была изменена каждая строка. Это помогает понять, кто и когда вносил изменения.

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


git blame <file>


Вывод показывает:
- Хэш коммита.
- Имя автора.
- Дату изменения.
- Номер строки и её содержимое.

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


git blame -L 10,20 <file>


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

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
Windows:
1. Скачать установщик с официального сайта: [git-scm.com](https://git-scm.com/).
2. Запустить установщик и следовать инструкциям на экране.
3. В процессе установки можно оставить настройки по умолчанию.

macOS:
1. Установить через Homebrew:

brew install git


2. Если Homebrew не установлен, можно скачать установщик с [git-scm.com](https://git-scm.com/).

Linux:
1. Для дистрибутивов на основе Debian/Ubuntu:

sudo apt update
sudo apt install git


2. Для дистрибутивов на основе Red Hat/Fedora:

sudo dnf install git


После установки проверить версию Git:

git --version


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

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
GitHub Actions — это инструмент для автоматизации задач в процессе разработки, таких как тестирование, сборка и развертывание. Он позволяет создавать рабочие процессы (workflows) для интеграции и доставки (CI/CD), что упрощает проверку качества кода и ускоряет выпуск обновлений.

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

Основные сценарии использования:

1. Сравнение рабочей директории и индекса:

git diff


Показывает изменения в файлах, которые еще не добавлены в индекс.

2. Сравнение индекса и последнего коммита:

git diff --cached


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

3. Сравнение между коммитами:

git diff commit1 commit2


Показывает различия между двумя коммитами.

4. Сравнение веток:

git diff branch1..branch2


Выводит различия между двумя ветками.

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

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

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


git submodule add <repository-url> <path>


- <repository-url> — ссылка на внешний репозиторий.
- <path> — путь, куда submodule будет добавлен в основном проекте.

Submodule фиксируется как конкретный коммит, что обеспечивает стабильность. Для обновления submodule до последней версии:


git submodule update --remote


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

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

✈️ Git собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
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