GIT Flashcards
Что делает команда git show?
Команда git show
используется в системе контроля версий Git для отображения информации о коммите. Когда вы выполняете git show [commit]
, где [commit]
- это идентификатор коммита (например, хэш коммита или ветка), git show
показывает следующую информацию о коммите:
- Хэш коммита
- Автор и электронная почта автора
- Дата и время коммита
- Заголовок коммита
- Список изменений, внесенных в рамках коммита
- Содержимое (патчи) измененных файлов
- Информацию о родительском коммите (или коммитах) в случае коммита слияния
git show
также может использоваться для вывода информации об отдельных объектах Git, таких как ветки, теги или деревья коммитов.
Что делает команда git log?
Команда git log
используется в системе контроля версий Git для просмотра истории коммитов в репозитории. Когда вы выполняете git log
, Git показывает список коммитов, начиная с последнего идущего вниз по истории.
Каждый коммит, указывается в следующем формате:
- Хэш коммита: уникальный идентификатор коммита.
- Автор: имя автора коммита.
- Дата и время: когда был создан коммит.
- Заголовок: краткое описание коммита.
git log
может быть использована с рядом опций для настройки вывода истории коммитов. Некоторые полезные опции:
-
--oneline
: вывод коммитов в одну строку, содержащую только хэш и заголовок коммита. -
--graph
: отображение истории коммитов в виде графа. -
--author
: фильтрация коммитов по автору. -
--since
/--after
и--until
/--before
: фильтрация коммитов по диапазону дат.
Как найти список файлов, которые изменились в определенном коммите?
Это достигается просмотром истории коммитов с помощью команды git log с применением определенных флагов:
stat под каждым из коммитов появится список и количество измененных файлов, количество строк, добавленных и удаленных в каждом из файлов. В конце, под списком, будет выведена суммарная статистика.
name-status — показывает список файлов, которые были изменены, удалены.
Для поиска списка файла в конкретном коммите можно выполнить команду git show и указать хеш коммита.
Чем отличается master и origin master ?
master принадлежит локальному репозиторию, а origin master - удаленному
Чем отличаются команды «git push» и «git pull»?
команда “git pull” нужна для получения изменений из удаленного репозитория, а команда “git push” нужна для отправки изменений в удаленный репозиторий
Как отменить действие команды «git add» для файла?
С помощью команды git reset
Как узнать кто автор строки в файле, используя систему Git?
С помощью команды git blame
Что делает команда git status?
Показывает состояние проекта: кол-во untracked, deleted, new и прочих файлов, количество коммитов, на которое отличается локальная версия репозитория от удаленного, и так далее
Как узнать, какие изменения мы сделали локально, относительно последнего состояния нашего удаленного репозитория?
С помощью команды git diff
Как решить конфликт в Git во время слияния веток?
Исправить изменения вручную там, где Git не смог это сделать автоматически, затем сделать коммит
Что означает статус файла modified в выводе команды git status?
Что файл имеет историю в системе Git и был изменен, относительно его последнего состояния
Что означает статус файла untracked в выводе команды git status?
Что система Git не отслеживает изменения этого файла
Что делает команда git add?
Запускает отслеживание изменений указанного файла
Что такое GitHub?
Веб-сервис для хостинга IT-проектов и их совместной разработки, основанный на Git
Что такое ветка в репозитории Git?
Это разные пути развития проекта, по сути, разные последовательности коммитов
Что такое репозиторий Git?
Папка, в которой находятся файлы конфигурации репозитория, файлы журналов, индекс и хранилище, содержащее файлы проекта
Что означает статус файла new в выводе команды git status?
Что файл только начал отслеживаться Git и пока не имеет истории
Как отменить слияние веток, если произошел конфликт?
С помощью команды git merge –abort
Что делает команда git stash?
Перемещает изменения в специальное хранилище с возможностью их последующего применения. Git stash — команда сохраняющая измененное состояние рабочей директории или отдельного файла в хранилище незавершенных изменений. Это дает возможность в любой момент применить их обратно. Например, если нужно переключиться между ветками без фиксации изменений, можно применить команду git stash, рабочая директория останется без изменений, данные будут сохранены в специальном хранилище. Для просмотра спрятанных изменений нужно вызвать команду git stash list, а для применения — git stash apply.
Что такое слияние двух веток?
Слияние двух веток в системе контроля версий Git означает объединение изменений из одной ветки в другую. Когда вы выполняете слияние веток, Git автоматически комбинирует изменения, сделанные в одной ветке, с изменениями из другой ветки и создает новый коммит, который содержит оба набора изменений.
Процесс слияния обычно включает следующие шаги:
- Вы переключаетесь на ту ветку, в которую вы хотите слить изменения (целевая ветка).
- Вы вызываете команду
git merge
с названием ветки, из которой вы хотите принять изменения (исходная ветка). - Git анализирует историю коммитов и пытается объединить изменения из исходной ветки в целевую ветку.
- Если Git находит конфликты, которые не могут быть автоматически разрешены, он останавливается и выводит сообщение о конфликте. Вам нужно вручную разрешить эти конфликты.
- После разрешения всех конфликтов, Git создает новый коммит с объединенными изменениями в целевой ветке.
Как исправить ошибку «fatal: The current branch my_branch has no upstream branch», возникающую при вводе git push?
Ошибка “fatal: The current branch my_branch has no upstream branch” возникает, когда указанная локальная ветка (my_branch
) не имеет привязки (upstream) к удаленной ветке. При этих обстоятельствах Git не знает, на какой удаленный репозиторий и ветку отправлять изменения при выполнении команды git push
.
Команда: git push -u origin my_branch
Что сделает команда «git clean -fd» ?
Удалит не только untracked файлы, но и папки
Добавится ли пустая папка в удаленный репозиторий после git push?
Пустые папки не добавляются в репозиторий
Как удалить все untracked файлы в текущем репозитории?
Выполнить команду: git clean -f
Как удалить локальную ветку my_branch?
Выполнить команду: git branch -D my_branch
Как получить ветку their с удаленного репозитория в локальный и сразу перейти на нее для работы?
git checkout -t origin/their
Что произойдет после выполнения команды «git branch» без какого либо параметра?
Выведет список локальных веток
Как создать ветку с названием my_branch ?
Выполнив команду: git branch my_branch
Как откатить измененный файл в начальное состояние (до изменения)?
С помощью команды git checkout path/to/file
Как можно отменить коммит в GIT, если он уже был опубликован ?
Как вариант, сделав обратный коммит с помощью команды git revert [commit SHA]. Это создаст коммит отменяющий изменения указанного коммита. После необходимо отправить изменения в удаленный репозиторий с помощью команды git push [repository]/branch-name. Если коммит сделан на личной ветке, не используемой никем кроме автора, ошибочный коммит можно отметить флагом drop в интерактивном режиме ребейза (git rebase -i), что полностью удалит указанный коммит из истории. После необходимо отправить изменения в удаленный репозиторий с помощью команды git push [repository]/branch-name с флагом force.
В чем заключается разница между git pull и git fetch ?
Git pull извлекает (fetch) данные с сервера и автоматически делает слияние (merge) их с кодом текущей ветки. Git fetch — связывается с удаленным репозиторием и получает данные, которые отсутствуют в локальном. При выполнении этой команды слияние не происходит.
Что такое “staging area” или “index” в GIT?
Staging area (область подготовленных файлов) — файл, который как правило, располагается в Git-директории и содержит информацию об изменениях, которые попадут в следующий коммит.
Индекс это бинарный файл (обычно находится в .git/index) содержащий отсортированный список имен путей, каждый с разрешениями и SHA1 значениями объекта блоба
За что отвечает команда “git config” ?
Git config — команда, которая позволяет просматривать и настраивать конфигурацию git репозитория.
Из чего состоит коммит в GIT?
Коммит — это односвязный список, который состоит из объектов с измененными файлами и ссылки на предыдущий коммит. Также указываются имена автора, метки времени и сообщения коммита.
Как создать GIT-репозиторий ?
Создать Git-репозиторий можно двумя путями. Первый — версионирование существующего проекта. Для этого нужно перейти в папку с проектом и выполнить команду git init, что задаст структуру Git-репозитория. После базовой конфигурации (git config) репозитория можно будет версионировать проект.
Второй: клонирование удаленного репозитория. Для этого нужно выполнить команду
git clone [url]
Где [url] — адрес репозитория.
Как объединить несколько отдельных коммитов в один цельный коммит ?
Это можно сделать с помощью перебазирования в интерактивном режиме работы (rebase). Например, для того, чтобы объединить, 3 последних коммита в один, необходимо выполнить команду git rebase -i HEAD~3 (3 соответствует числу коммитов, которые нужно объединить, отсчет от HEAD). Откроется окно редактора, в котором первые 3 строки соответствуют последним трем коммитам:
pick ab37583 Added feature 1.
pick 3ab2b83 Added feature 2.
pick 3ab5683 Added feature 3
В начале каждой строки стоит слово pick. Нужно поменять его на squash или s, сохранить изменения, закрыть редактор, после чего git попросит задать сообщение нового коммита, содержащего в себе изменения трех исходных.
За что отвечает команда «git bisect»? Как ее можно использовать для определения источника бага (регрессии) ?
Команда Git bisect выполняет бинарный поиск по истории коммитов. Если неизвестно, где находится проблема и было произведено много коммитов можно воспользоваться командой git bisect, чтобы определить коммит, который вызвал проблему. Для этого нужно выполнить команду: git bisect start, затем git bisect bad — это укажет Git коммит, в котором была обнаружена проблема. Коммит git bisect good [хеш коммита] укажет Git коммит в котором проблема не проявляется. Далее Git выяснит количество промежуточных коммитов и с помощью бинарного поиска, передвигая указатель на некоторые из промежуточных коммитов, поможет найти проблемный.
Как настроить GIT-репозиторий для запуска инструментов проверки работоспособности кода непосредственно перед выполнением коммитов и предотвращения их в случае сбоя теста?
С помощью хука pre-commit. Для этого нужно определить в конфигурационном файле pre-commit (в папке .git/hooks), код проверки работоспособности внесенных изменений. После этого, Git будет запускать указанную проверку перед каждым коммитом. В случае если проверка вернет код отличный от нуля, коммит не будет применен.
Какие вы знаете модели ветвления в GIT? Опишите их.
Одной из самых популярных моделей ветвления Git является git flow. Говоря кратко, работая по этой модели в репозитории должны быть две постоянные ветки (master, develop) и любое количество временных веток (feature- , release-, hotfix-) которые вливаются в основные. Порядок подготовки релизов от начала разработки и непосредственно к осуществлению релиза четко диктуется моделью. Подробнее можно почитать по ссылке.
Каким образом можно установить было ли слияние ветки в master?
Команда git branch —merged отфильтровывает ветки, которые были слиты.
Что такое git rebase и для чего он нужен?
Команда git rebase (перебазирование) — применяет коммиты текущей ветки после коммитов ветки (base tip), указанной в команде rebase. С помощью rebase можно выполнять целый ряд задач: слияние веток, перемотку (fast forwarding), изменение коммитов текущей ветки (редактирование, именование, удаление, слияние, перетасовка коммитов), пересадку текущей ветки (с помощью опции —onto) и др.