Git Flashcards

1
Q

Что такое ГИТ?

A

GIT — это распределенная система контроля версий и система управления исходным кодом (SCM), предназначенная для быстрой и эффективной обработки небольших и крупных проектов.

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

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

A

Репозиторий содержит каталог с именем .git, где git хранит все свои метаданные репозитория. Содержимое каталога .git является личным для git.

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

Как создать репозиторий в Git?

A

В Git, чтобы создать репозиторий, создайте каталог для проекта, если он не существует, а затем выполните команду «git init». При запуске этой команды в каталоге проекта будет создан каталог .git, каталог не обязательно должен быть пустым.

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

Как переименовать ветку?

A

Если мы находимся в любой ветка
git branch -m [old-name] [new-name]

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

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

A

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

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

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

A

Это информация об измененных файлах. Коммит состоит из автора коммита, измененных файлов, и времени.

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

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

A

Загружаем список комитов
git log

Открываем список изменения комита
git show [хеш комита]

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

HEAD в гит

A

HEAD - это символическое имя текущего выбранного коммита — это, по сути, тот коммит, над которым мы в данный момент работаем.
Отделение (detaching) HEAD означает лишь присвоение его не ветке, а конкретному коммиту.

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

git log
git show

A

в git log можно найти хешь коммита

Открываем список изменения комита
git show [хеш комита]

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

Относительные ссылки git

A

Способ перемещаться по коммитам.

Перемещение на один коммит назад это ^
Перемещение на несколько коммитов назад ~<num></num>

git checkout HEAD^ - перемещение на коммит выше
git checkout HEAD~3 - перемещение на 3 коммита выше

git branch -f main HEAD~3 - переместит ветку main на 3 коммита назад относительно HEAD
вместо head~3 можно указать ссылку на хешь коммита

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

Способы отмены изменений в git.
git reset и git revert

A

Есть два основных способа отмены изменений в Git: первый - это git reset, а второй - git revert

git reset перенесёт ветку назад, как будто некоторых коммитов вовсе и не было.
git reset HEAD^

git revert - после git revert появится новый коммит, который отменяет изменения внесенные в предыдущем коммите
git revert HEAD
git revert HEAD~2

git reset —hard пользуются для полного удаления всех изменений, сделанных после определенного коммита

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

git cherry-pick

A

Это простой способ копировать один или несколько коммитов на место, где сейчас находишься (HEAD)

git cherry-pick <Commit1> <Commit2> <...></Commit2></Commit1>

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

git merge
git rebase

A

git merge - слияние веток.Слияния в Git создают особый вид коммита, который имеет сразу двух родителей.

При ребейзе Git по сути перебазирует (копирует) коммит где мы находимся в новое место

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

интерактивный rebase (rebase -i)

A

При rebase -i открывается редактор vim в котором выбираешь каким образом копировать коммиты.
При rebase -i есть 3 варианта:
- Можно сменить положение коммита по порядку, переставив строчку с ним в редакторе
- Можно “выкинуть” коммит из ребейза.
- Можно соединить коммиты

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

git tag

A

Ветки просто изменить, они часто временны и постоянно меняют своё состояние.

Тег позволяет ссылаться постоянно на конкретный коммит. После создания они никогда не сменят своего положения

git tag tagName hesh

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

git describe

A

Выводит информацию сколько коммитов было сделано от ближайшего тега

git describe

17
Q

git clone

A

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

18
Q

git fetch

A

Фактически, git fetch скачивает локальное представление удалённых репозиториев с тем, что является актуальным на текущий момент времени в локальном репозитории

19
Q

git pull

A

Процедура скачивания (fetching) изменений с удалённой ветки и объединения (merging) настолько частая и распространённая, что git предоставляет вместо двух команд - одну! Эта команда - git pull.

20
Q

git push

A

Команда git push отвечает за загрузку ваших изменений в указанный удалённый репозиторий

21
Q

git branch -u o/main foo
git checkout -b foo o/main

A

Cпособ указать любой ветке отслеживать удалённую ветку

22
Q

добавление источника remote

Удаление источника remote

A

git remote add origin https://github.com/schacon/simplegit-progit

git remote rm <имя></имя>

23
Q

git push origin <источник(локальная ветка)>:<получатель(ветка удаленного репозитория)>
git fetch origin <(ветка удаленного репозитория)>:<(локальная ветка)>

A

Когда вам необходимо разделить источник и получатель аргумента <пункт>, соедините их вместе, используя двоеточие.</пункт>

так мы пушим наши изменения в источнике в другое место (получатель). Если написана ветка, и такой ветки нету в получателе git создаст новую

24
Q

git push origin :<получатель>
git fetch origin :<источник(локальная ветка)></получатель>

A

Если при push стоит пустой источник, то ветка на удаленном репозитории удалится

При fetch создастся новая пустая ветка