GIT Flashcards

You may prefer our related Brainscape-certified flashcards:
1
Q

Что делает команда git show?

A

Команда git show используется в системе контроля версий Git для отображения информации о коммите. Когда вы выполняете git show [commit], где [commit] - это идентификатор коммита (например, хэш коммита или ветка), git show показывает следующую информацию о коммите:

  • Хэш коммита
  • Автор и электронная почта автора
  • Дата и время коммита
  • Заголовок коммита
  • Список изменений, внесенных в рамках коммита
  • Содержимое (патчи) измененных файлов
  • Информацию о родительском коммите (или коммитах) в случае коммита слияния

git show также может использоваться для вывода информации об отдельных объектах Git, таких как ветки, теги или деревья коммитов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что делает команда git log?

A

Команда git log используется в системе контроля версий Git для просмотра истории коммитов в репозитории. Когда вы выполняете git log, Git показывает список коммитов, начиная с последнего идущего вниз по истории.

Каждый коммит, указывается в следующем формате:

  • Хэш коммита: уникальный идентификатор коммита.
  • Автор: имя автора коммита.
  • Дата и время: когда был создан коммит.
  • Заголовок: краткое описание коммита.

git log может быть использована с рядом опций для настройки вывода истории коммитов. Некоторые полезные опции:

  • --oneline: вывод коммитов в одну строку, содержащую только хэш и заголовок коммита.
  • --graph: отображение истории коммитов в виде графа.
  • --author: фильтрация коммитов по автору.
  • --since / --after и --until / --before: фильтрация коммитов по диапазону дат.

Как найти список файлов, которые изменились в определенном коммите?
Это достигается просмотром истории коммитов с помощью команды git log с применением определенных флагов:
stat под каждым из коммитов появится список и количество измененных файлов, количество строк, добавленных и удаленных в каждом из файлов. В конце, под списком, будет выведена суммарная статистика.
name-status — показывает список файлов, которые были изменены, удалены.
Для поиска списка файла в конкретном коммите можно выполнить команду git show и указать хеш коммита.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Чем отличается master и origin master ?

A

master принадлежит локальному репозиторию, а origin master - удаленному

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Чем отличаются команды «git push» и «git pull»?

A

команда “git pull” нужна для получения изменений из удаленного репозитория, а команда “git push” нужна для отправки изменений в удаленный репозиторий

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Как отменить действие команды «git add» для файла?

A

С помощью команды git reset

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Как узнать кто автор строки в файле, используя систему Git?

A

С помощью команды git blame

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что делает команда git status?

A

Показывает состояние проекта: кол-во untracked, deleted, new и прочих файлов, количество коммитов, на которое отличается локальная версия репозитория от удаленного, и так далее

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Как узнать, какие изменения мы сделали локально, относительно последнего состояния нашего удаленного репозитория?

A

С помощью команды git diff

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Как решить конфликт в Git во время слияния веток?

A

Исправить изменения вручную там, где Git не смог это сделать автоматически, затем сделать коммит

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что означает статус файла modified в выводе команды git status?

A

Что файл имеет историю в системе Git и был изменен, относительно его последнего состояния

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что означает статус файла untracked в выводе команды git status?

A

Что система Git не отслеживает изменения этого файла

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Что делает команда git add?

A

Запускает отслеживание изменений указанного файла

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Что такое GitHub?

A

Веб-сервис для хостинга IT-проектов и их совместной разработки, основанный на Git

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Что такое ветка в репозитории Git?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Что такое репозиторий Git?

A

Папка, в которой находятся файлы конфигурации репозитория, файлы журналов, индекс и хранилище, содержащее файлы проекта

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что означает статус файла new в выводе команды git status?

A

Что файл только начал отслеживаться Git и пока не имеет истории

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Как отменить слияние веток, если произошел конфликт?

A

С помощью команды git merge –abort

18
Q

Что делает команда git stash?

A

Перемещает изменения в специальное хранилище с возможностью их последующего применения. Git stash — команда сохраняющая измененное состояние рабочей директории или отдельного файла в хранилище незавершенных изменений. Это дает возможность в любой момент применить их обратно. Например, если нужно переключиться между ветками без фиксации изменений, можно применить команду git stash, рабочая директория останется без изменений, данные будут сохранены в специальном хранилище. Для просмотра спрятанных изменений нужно вызвать команду git stash list, а для применения — git stash apply.

19
Q

Что такое слияние двух веток?

A

Слияние двух веток в системе контроля версий Git означает объединение изменений из одной ветки в другую. Когда вы выполняете слияние веток, Git автоматически комбинирует изменения, сделанные в одной ветке, с изменениями из другой ветки и создает новый коммит, который содержит оба набора изменений.

Процесс слияния обычно включает следующие шаги:

  1. Вы переключаетесь на ту ветку, в которую вы хотите слить изменения (целевая ветка).
  2. Вы вызываете команду git merge с названием ветки, из которой вы хотите принять изменения (исходная ветка).
  3. Git анализирует историю коммитов и пытается объединить изменения из исходной ветки в целевую ветку.
  4. Если Git находит конфликты, которые не могут быть автоматически разрешены, он останавливается и выводит сообщение о конфликте. Вам нужно вручную разрешить эти конфликты.
  5. После разрешения всех конфликтов, Git создает новый коммит с объединенными изменениями в целевой ветке.
20
Q

Как исправить ошибку «fatal: The current branch my_branch has no upstream branch», возникающую при вводе git push?

A

Ошибка “fatal: The current branch my_branch has no upstream branch” возникает, когда указанная локальная ветка (my_branch) не имеет привязки (upstream) к удаленной ветке. При этих обстоятельствах Git не знает, на какой удаленный репозиторий и ветку отправлять изменения при выполнении команды git push.

Команда: git push -u origin my_branch

21
Q

Что сделает команда «git clean -fd» ?

A

Удалит не только untracked файлы, но и папки

22
Q

Добавится ли пустая папка в удаленный репозиторий после git push?

A

Пустые папки не добавляются в репозиторий

23
Q

Как удалить все untracked файлы в текущем репозитории?

A

Выполнить команду: git clean -f

24
Q

Как удалить локальную ветку my_branch?

A

Выполнить команду: git branch -D my_branch

25
Q

Как получить ветку their с удаленного репозитория в локальный и сразу перейти на нее для работы?

A

git checkout -t origin/their

26
Q

Что произойдет после выполнения команды «git branch» без какого либо параметра?

A

Выведет список локальных веток

27
Q

Как создать ветку с названием my_branch ?

A

Выполнив команду: git branch my_branch

28
Q

Как откатить измененный файл в начальное состояние (до изменения)?

A

С помощью команды git checkout path/to/file

29
Q

Как можно отменить коммит в GIT, если он уже был опубликован ?

A

Как вариант, сделав обратный коммит с помощью команды git revert [commit SHA]. Это создаст коммит отменяющий изменения указанного коммита. После необходимо отправить изменения в удаленный репозиторий с помощью команды git push [repository]/branch-name. Если коммит сделан на личной ветке, не используемой никем кроме автора, ошибочный коммит можно отметить флагом drop в интерактивном режиме ребейза (git rebase -i), что полностью удалит указанный коммит из истории. После необходимо отправить изменения в удаленный репозиторий с помощью команды git push [repository]/branch-name с флагом force.

30
Q

В чем заключается разница между git pull и git fetch ?

A

Git pull извлекает (fetch) данные с сервера и автоматически делает слияние (merge) их с кодом текущей ветки. Git fetch — связывается с удаленным репозиторием и получает данные, которые отсутствуют в локальном. При выполнении этой команды слияние не происходит.

31
Q

Что такое “staging area” или “index” в GIT?

A

Staging area (область подготовленных файлов) — файл, который как правило, располагается в Git-директории и содержит информацию об изменениях, которые попадут в следующий коммит.

Индекс это бинарный файл (обычно находится в .git/index) содержащий отсортированный список имен путей, каждый с разрешениями и SHA1 значениями объекта блоба

32
Q

За что отвечает команда “git config” ?

A

Git config — команда, которая позволяет просматривать и настраивать конфигурацию git репозитория.

33
Q

Из чего состоит коммит в GIT?

A

Коммит — это односвязный список, который состоит из объектов с измененными файлами и ссылки на предыдущий коммит. Также указываются имена автора, метки времени и сообщения коммита.

34
Q

Как создать GIT-репозиторий ?

A

Создать Git-репозиторий можно двумя путями. Первый — версионирование существующего проекта. Для этого нужно перейти в папку с проектом и выполнить команду git init, что задаст структуру Git-репозитория. После базовой конфигурации (git config) репозитория можно будет версионировать проект.
Второй: клонирование удаленного репозитория. Для этого нужно выполнить команду

git clone [url]

Где [url] — адрес репозитория.

35
Q

Как объединить несколько отдельных коммитов в один цельный коммит ?

A

Это можно сделать с помощью перебазирования в интерактивном режиме работы (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 попросит задать сообщение нового коммита, содержащего в себе изменения трех исходных.

36
Q

За что отвечает команда «git bisect»? Как ее можно использовать для определения источника бага (регрессии) ?

A

Команда Git bisect выполняет бинарный поиск по истории коммитов. Если неизвестно, где находится проблема и было произведено много коммитов можно воспользоваться командой git bisect, чтобы определить коммит, который вызвал проблему. Для этого нужно выполнить команду: git bisect start, затем git bisect bad — это укажет Git коммит, в котором была обнаружена проблема. Коммит git bisect good [хеш коммита] укажет Git коммит в котором проблема не проявляется. Далее Git выяснит количество промежуточных коммитов и с помощью бинарного поиска, передвигая указатель на некоторые из промежуточных коммитов, поможет найти проблемный.

37
Q

Как настроить GIT-репозиторий для запуска инструментов проверки работоспособности кода непосредственно перед выполнением коммитов и предотвращения их в случае сбоя теста?

A

С помощью хука pre-commit. Для этого нужно определить в конфигурационном файле pre-commit (в папке .git/hooks), код проверки работоспособности внесенных изменений. После этого, Git будет запускать указанную проверку перед каждым коммитом. В случае если проверка вернет код отличный от нуля, коммит не будет применен.

38
Q

Какие вы знаете модели ветвления в GIT? Опишите их.

A

Одной из самых популярных моделей ветвления Git является git flow. Говоря кратко, работая по этой модели в репозитории должны быть две постоянные ветки (master, develop) и любое количество временных веток (feature- , release-, hotfix-) которые вливаются в основные. Порядок подготовки релизов от начала разработки и непосредственно к осуществлению релиза четко диктуется моделью. Подробнее можно почитать по ссылке.

39
Q

Каким образом можно установить было ли слияние ветки в master?

A

Команда git branch —merged отфильтровывает ветки, которые были слиты.

40
Q

Что такое git rebase и для чего он нужен?

A

Команда git rebase (перебазирование) — применяет коммиты текущей ветки после коммитов ветки (base tip), указанной в команде rebase. С помощью rebase можно выполнять целый ряд задач: слияние веток, перемотку (fast forwarding), изменение коммитов текущей ветки (редактирование, именование, удаление, слияние, перетасовка коммитов), пересадку текущей ветки (с помощью опции —onto) и др.