Git Flashcards
Что такое ГИТ?
GIT — это распределенная система контроля версий и система управления исходным кодом (SCM), предназначенная для быстрой и эффективной обработки небольших и крупных проектов.
Что такое репозиторий в GIT?
Репозиторий содержит каталог с именем .git, где git хранит все свои метаданные репозитория. Содержимое каталога .git является личным для git.
Как создать репозиторий в Git?
В Git, чтобы создать репозиторий, создайте каталог для проекта, если он не существует, а затем выполните команду «git init». При запуске этой команды в каталоге проекта будет создан каталог .git, каталог не обязательно должен быть пустым.
Как переименовать ветку?
Если мы находимся в любой ветка
git branch -m [old-name] [new-name]
Как настроить репозиторий для запуска инструментов проверки работоспособности кода непосредственно перед выполнением комитов?
Это делается с помощью хука pre-commit. Для этого нужно прописать код проверки в конфигурационном файле pre-commit (.git/hooks). Git будет запускать данную проверку перед каждым комитом. Один из популярных - hasky.
Из чего состоит комит?
Это информация об измененных файлах. Коммит состоит из автора коммита, измененных файлов, и времени.
Как найти список файлов, которые изменились в определенном комите?
Загружаем список комитов
git log
Открываем список изменения комита
git show [хеш комита]
HEAD в гит
HEAD - это символическое имя текущего выбранного коммита — это, по сути, тот коммит, над которым мы в данный момент работаем.
Отделение (detaching) HEAD означает лишь присвоение его не ветке, а конкретному коммиту.
git log
git show
в git log можно найти хешь коммита
Открываем список изменения комита
git show [хеш комита]
Относительные ссылки git
Способ перемещаться по коммитам.
Перемещение на один коммит назад это ^
Перемещение на несколько коммитов назад ~<num></num>
git checkout HEAD^ - перемещение на коммит выше
git checkout HEAD~3 - перемещение на 3 коммита выше
git branch -f main HEAD~3 - переместит ветку main на 3 коммита назад относительно HEAD
вместо head~3 можно указать ссылку на хешь коммита
Способы отмены изменений в git.
git reset и git revert
Есть два основных способа отмены изменений в Git: первый - это git reset, а второй - git revert
git reset перенесёт ветку назад, как будто некоторых коммитов вовсе и не было.
git reset HEAD^
git revert - после git revert появится новый коммит, который отменяет изменения внесенные в предыдущем коммите
git revert HEAD
git revert HEAD~2
git reset —hard пользуются для полного удаления всех изменений, сделанных после определенного коммита
git cherry-pick
Это простой способ копировать один или несколько коммитов на место, где сейчас находишься (HEAD)
git cherry-pick <Commit1> <Commit2> <...></Commit2></Commit1>
git merge
git rebase
git merge - слияние веток.Слияния в Git создают особый вид коммита, который имеет сразу двух родителей.
При ребейзе Git по сути перебазирует (копирует) коммит где мы находимся в новое место
интерактивный rebase (rebase -i)
При rebase -i открывается редактор vim в котором выбираешь каким образом копировать коммиты.
При rebase -i есть 3 варианта:
- Можно сменить положение коммита по порядку, переставив строчку с ним в редакторе
- Можно “выкинуть” коммит из ребейза.
- Можно соединить коммиты
git tag
Ветки просто изменить, они часто временны и постоянно меняют своё состояние.
Тег позволяет ссылаться постоянно на конкретный коммит. После создания они никогда не сменят своего положения
git tag tagName hesh
git describe
Выводит информацию сколько коммитов было сделано от ближайшего тега
git describe
git clone
это команда, которая создаст локальную копию удалённого репозитория
git fetch
Фактически, git fetch скачивает локальное представление удалённых репозиториев с тем, что является актуальным на текущий момент времени в локальном репозитории
git pull
Процедура скачивания (fetching) изменений с удалённой ветки и объединения (merging) настолько частая и распространённая, что git предоставляет вместо двух команд - одну! Эта команда - git pull.
git push
Команда git push отвечает за загрузку ваших изменений в указанный удалённый репозиторий
git branch -u o/main foo
git checkout -b foo o/main
Cпособ указать любой ветке отслеживать удалённую ветку. Указываем куда мы будем пушить наши изменения (те указываем удаленный репозиторий для ветки)
добавление источника remote
Удаление источника remote
git remote add origin https://github.com/schacon/simplegit-progit
git remote rm <имя></имя>
git push origin <источник(локальная ветка)>:<получатель(ветка удаленного репозитория)>
git fetch origin <(ветка удаленного репозитория)>:<(локальная ветка)>
Когда вам необходимо разделить источник и получатель аргумента <пункт>, соедините их вместе, используя двоеточие.</пункт>
так мы пушим наши изменения в источнике в другое место (получатель). Если написана ветка, и такой ветки нету в получателе git создаст новую
git push origin :<получатель>
git fetch origin :<источник(локальная ветка)></получатель>
Если при push стоит пустой источник, то ветка на удаленном репозитории удалится
При fetch создастся новая пустая ветка