Skip to content

Latest commit

 

History

History
102 lines (60 loc) · 6.93 KB

advanced.md

File metadata and controls

102 lines (60 loc) · 6.93 KB

Git — продвинутый уровень

🏆 Правильных ответов: 15 из 15.

Q1. Ваш коллега работает бухгалтером в крупной компании. Он часто теряет корректные версии отчетов из-за ошибок, которые допускают другие сотрудники. Как Git теоретически может помочь в написании квартальных отчетов?

  • Позволяет создавать и хранить версии отчетов, легко отслеживать изменения и вносить исправления

Q2. Вы работаете над новой функциональностью в ветке <feature_branch1>. Ваш коллега также отвел другую ветку <feature_branch2> от основной. Находясь на ветке <feature_branch2>, он выполнил команду, чтобы применить все коммиты из ветки <feature_branch1> с сохранением линейной истории коммитов без лишних слияний. Какую команду он выполнил?

  • git rebase <feature_branch1>

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

  • Использовать команду git stash

Q4. Что НЕ содержит коммит?

  • Полную копию рабочей директории

Q5. Нужно изменить состояние с рис. 1 на состояние с рис. 2 (см. ниже). Знак «*» указывает на HEAD. Ваш коллега предложил такую последовательность команд

advanced-q5

1. git checkout one
2. git cherry-pick C4 C3 C2
3. git checkout two
4. git cherry-pick C5 C4 C3 C2
5. git branch three C2

Однако она не сработала. В чем причина?

  • В командах под номером 2 и 4 хеши перечисленных коммитов должны быть в обратном порядке

Q6. Вы приняли решение удалить ветку из репозитория, чтобы очистить кодовую базу и упростить процесс разработки. Какую команду используете для полного удаления ветки без следов в истории проекта?

  • git branch -D branch_name

Q7. Вы решили объединить ветки <task_branch> и <main_branch> при помощи команды merge. Какая стратегия слияния будет выбрана Git по умолчанию, начиная с версии 2.33?

  • ort

Q8. Какой параметр нужно передать команде git checkout, чтобы перейти из состояния как на рис. 1 в состояние на рис. 2? При условии, что на визуализации первый родитель находится прямо над коммитом.

1220ce20-cb19-4687-99a0-ce8af8dc10ee

  • C5^2

Q9. Репозиторий вырос настолько, что не получается скопировать его командой git clone. Как скопировать репозиторий, сохранив идентификаторы коммитов?

  • Использовать флаг –depth для команды clone, чтобы скачать только несколько последних коммитов

Q10. На сайте возникла ошибка, которую необходимо поправить — вы начали исправлять ее в ветке issue. В процессе вы переключились в ветку master и внесли изменения там. Закончив работу в issue, вы выполнили слияние двух веток. После введения команды система выдала следующее сообщение:

$ git merge issue
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

В одном из файлов появился такой раздел:

<<<<<<<HEAD:index.html

<div id="footer">contact : support@github.com</div>

=======

<div id="footer">
please contact us at support@github.com
</div>
>>>>>>> issue:index.html

Как исправить проблему?

  • Нужно вручную внести изменения в указанном месте и отметить решенные конфликты с помощью команды git add

Q11. В вашем проекте есть небольшой набор веток, между которыми вы постоянно переключаетесь — пару релизных и master. Какой способ будет предпочтительным для организации вашей работы?

  • Использовать инструмент git worktree

Q12. В какой из ситуаций есть необходимость использовать Git Subtree?

  • Для интеграции множества репозиториев в одну рабочую область

Q13. В рамках инфраструктурного обновления на работе был изменен хост репозитория. Что нужно сделать, чтобы продолжить работу без создания новой локальной копии удаленного (remote) репозитория, если вы клонировали репозиторий до переезда хоста?

  • Изменить адрес origin при помощи команды git remote set-url origin <new_url>

Q14. Чтобы следить за тем, что все ваши коммиты соответствуют командному кодстайлу (Code Style), вы решили добавить скрипт проверки. Какой git hook подойдет для этой проверки лучше всего?

  • pre-commit

Q15. К какому рабочему процессу относится следующее состояние репозитория?

8a0d2821-ffb4-4faf-ba48-f754d67793c1

  • Gitflow Workflow