-
Что такое VCS? Что такое Git? Почему его используют?
Ответ
Version Control System (система контроля версий) — программное обеспечение для облегчения работы с изменяющейся информацией.https://ru.wikipedia.org/wiki/Система_управления_версиями
Git — распределённая система контроля версий, которая даёт возможность разработчикам отслеживать изменения в файлах и работать совместно с другими разработчиками.
Подход Git к хранению данных больше похож на набор снимков миниатюрной файловой системы. При каждом сохранении состояния своего проекта в Git, система запоминает, как выглядит каждый файл в этот момент, и сохраняет ссылку на этот снимок.
-
Как создать репозиторий, подключить внешний репозиторий?
Ответ
На примере пользователя `username`, создавшего репозиторий `project` на Гитхабе.git init git add <cписок файлов> git commit -m "first commit" git remote add origin git@github.com:username/project.git git push -u origin master
-
Как загрузить удаленный репозиторий?
Ответ
git clone git@github.com:username/project.git
-
Что такое коммит? Как посмотреть историю коммитов?
Ответ
Коммит — подтверждение изменений.История коммитов
git log
https://git-scm.com/book/ru/v2/Основы-Git-Просмотр-истории-коммитов
-
Какие состояния файлов существуют в системе Git
Ответ
В Git'е файлы могут находиться в одном из трёх состояний: зафиксированном, изменённом и подготовленном. "Зафиксированный" значит, что файл уже сохранён в вашей локальной базе. К изменённым относятся файлы, которые поменялись, но ещё не были зафиксированы. Подготовленные файлы — это изменённые файлы, отмеченные для включения в следующий коммит.Таким образом, в проектах, использующих Git, есть три части: каталог Git'а (Git directory), рабочий каталог (working directory) и область подготовленных файлов (staging area).
-
Что такое ветка в Git?
Ответ
Организованная система ссылок на коммиты.Ветка по умолчанию в Git'е называется
master
. Когда вы создаёте коммиты на начальном этапе, вам дана веткаmaster
, указывающая на последний сделанный коммит. При каждом новом коммите она сдвигается вперёд автоматически.Ответвление от основной ветки осуществляется для работы с определенной фичей.
-
Отличия между командами
merge
иrebase
?Ответ
В Git'е есть два способа включить изменения из одной ветки в другую: `merge` (слияние) и `rebase` (перемещение).merge
Это более простая команда.
Git создаёт новый снимок состояния, который является результатом трёхходового слияния, и автоматически создаёт новый коммит, который указывает на этот новый снимок состояния. Такой коммит называют коммит-слияние, так как он является особенным из-за того, что имеет больше одного предка.
rebase
В этом случае находится общий предок для двух веток (на которой вы находитесь сейчас и на которую вы выполняете перемещение); для каждого из коммитов в текущей ветке берётся его дельта и сохраняется во временный файл; текущая ветка устанавливается на тот же коммит, что и ветка, на которую выполняется перемещение; и, наконец, одно за другим применяются все изменения. Таким образом, все коммиты переписываются с новыми значениями хешей.
При этом история коммитов становится более аккуратной и красивой. Она выглядит как линейная последовательность коммитов, когда в действительности она выполнялась параллельно.
-
Золотое правило
rebase
?Ответ
Не перемещайте коммиты, которые вы уже отправили в публичный репозиторий.Если вы будете следовать этому указанию, всё будет хорошо. Если нет — люди возненавидят вас, вас будут презирать ваши друзья и семья.
Правило вытекает из свойства
rebase
переписывать историю коммитов. -
Как загрузить последние изменения с определенной ветки?
Ответ
git pull --rebase
-
Как отправить свои изменения на удаленный репозиторий?
Ответ
git add <cписок файлов> git commit -m "Commit message" git push
-
Как добавить изменения в уже созданный коммит? изменить название такого коммита?
Ответ
git add <cписок файлов> git commit --amend`
-
Как удалить ветку локально и с удаленного репозитория?
Ответ
git branch -d new-branch git branch -d origin new-branch git push origin :new-branch
-
Что такое запросы на слияние (pull requests)? Как их создавать?
Ответ
Удобная система взаимодействия между автором внесения изменений и хозяином репозитория, позволяющая обсуждать изменения и вносить правки по их ходу. -
Как перенести изменения из одной ветку в другую (2 способа)?
Ответ
Использовать cherry-pickhttps://www.youtube.com/watch?v=BP53rBf1PUE
https://www.youtube.com/watch?v=-fDa6ntlBXg
Второй способ немного сложнее, нужно сделать ответвление и затем смержить в обе ветки код.
-
Разница между git и svn (если есть)?
Ответ
Главное отличие Git от Subversion заключается в том, что Git — распределенная система контроля версий.- Сервер вообще не нужен. Можно работать локально.
- В отличие от Subversion, если сервер с «главным» репозиторием, куда пушат свои изменения все разработчики (хотя формально в Git нет никакого «главного» репозитория), вдруг прилег — ничего страшного. Делаем коммиты в локальный репозиторий и ждем, когда сервер вернется.
- Git дает нам нормальное шифрование «из коробки», безо всяких танцев с бубнами, как в случае с Subversion.
- Git не раскидывает по каталогам служебную информацию (файл «.svn»?), вместо этого она хранится только в корне репозитория.
-
Для чего нужен SSH-ключ?
Ответ
SSH-ключи используются для облегчённой авторизации на различных сервисах.SSH-ключ состоит из двух частей
- id_rsa — закрытая часть, которая должна быть доступна только вам, ни кому и ни когда нельзя давать к ней доступ, этот файл можно переносить с компа на ком. так чтобы был у вас был только 1 ключ, но тут свои риски, например у вас в одном месте кто-то получил доступ к $HOME, следовательно все ваши аккаунты потенциально взломали
- id_rsa.pub — открытая часть, бесполезна без закрытой, её можно показывать всем, можно даже повесить на своём сайте, чтобы желающие дать вам доступ на свой сервер могли быстро добавить ваш открытый ключ в файл
~/.ssh/authorized_keys
.
-
git commit
— в каких случаях писать-am
,-a
и-m
?Ответ
Создание коммита с сообщением (**m**essage) для файлов, находящихся в staging area, которые предварительно туда добавлены:git add some.file git commit -m "Your message here"
Создание коммита для индексированных (отслеживаемых) файлов автоматически (без предварительной команды
add
). Новые файлы в коммит не попадут:git commit -a -m "Your message here"
Можно просто
git commit -am "Your message here"
-
Что такое
gitflow
?Ответ
Ветвление — это основное понятие в git. Весь GitHub Flow основанн именно на нем и солгасно ему есть только одно правило: всё, что находится в mastet-ветке — гарантированно стабильно и готово к деплою в любой момент. Поэтому чрезвычайно важно, чтобы любая ваша новая ветвь создавалась именно от mastera.
Где искать ответы: