GIT
April 12, 2024•1,229 words
Первоначальная настройка
git config --global user.name 'user name'
- устанавливает никнейм от чьего имени будут вноситься изменения с устройства.git config --global user.email 'email'
- устанавливает электронную почту от чьего имени будут вноситься изменения с устройства.-
git config --list
- вывод на экран первоначальных настроек.
Работаем с Git на своём компьютере
git init
- инициализирует новый репозиторий Git.git status
- показывает состояние рабочего каталога и индекса.git add <file (s)>
- добавляет изменения в индекс для подготовки к коммиту.git rm -r --cached <file>
- удалить файла из индекса без удаления с устройства (удалить отслеживание / удалить с реппозитория)(после, закомитить).git commit -m 'comment'
- фиксирует состояние индекса в репозитории.git commit --amend -m 'comment'
- изменяет комментарий последнего коммита.git commit --amend --no-edit
- добавляет изменения в последний коммит не изменяя комментарий.git log
- показывает историю коммитов.git show
- показывает информацию о конкретном коммите.
Работаем с удалённым репозиторием
git clone
- клонирует существующий репозиторий Git на компьютер.git push
- отправляет изменения в удаленный репозиторий.git pull
- получает изменения из удаленного репозитория и объединяет их с локальными изменениями.git push -u origin <master>
- отправляет изменения из локального репозитория в удаленный репозиторий с именем "origin" ветки ."master". Используется только для первого раза.git remote
- показывает информацию о удаленных репозиториях.git remote add origin <path>
- добавление удаленного репозитория с именем "origin" в ваш локальный репозиторий Git.git remote remove origin
- удаление связи с удаленным репозиторием.git remote -v
- посмотреть путь к удаленному репозиторию с которым связан локальный репозиторий.git fetch -p
- обновляет локальный репозиторий с изменениями из удаленного репозитория и одновременно удаляет устаревшие локальные ссылки на удаленные ветки, которые больше не существуют на удаленном репозитории (--prune).
Командная работа в Git
git branch
- показывает ветки (локальные).git branch -a
- показывает все ветки (локальные и удаленные).git branch -vv
- показывает все ветки локального репозитория и то, к каким удалённым веткам они привязаны.git branch <branch>
- создает ветку.git branch -m <new-branch>
- переименовать ветку.git branch -d <branch>
- удаляет ветку (если она влита в другую ветку).git branch -D <branch>
- удаляет ветку (если она не влита в другую ветку).git checkout <branch>
- переключается между ветками.git checkout -b <branch>
- создает новую ветку и переключается на неё (аналогgit branch <name>
).git checkout -b <branch> origin/<branch>
- создает ветку и вливает в нее удаленную ветку.git push -u origin <branch>
- (уже встречалась выше) создает в удаленном репозитории одноименную ветку и связывает с локальной веткой и отправляет локальный коммит на сервер.git push -d origin <branch>
- удаляет в удаленном репозитории одноименную ветку.git push --force
- принудительная отправка изменений из локального репозитория в удаленный репозиторий, даже если история коммитов в локальном и удаленном репозиториях не совпадает.git merge <branch_name>
- объединяет изменения из ветки в ветку из которой выполняется команда.git merge --abort
- прерывает процесс слияния веток и возвращает репозиторий к состоянию до начала слияния, удаляя все изменения, связанные со слиянием.git reset --merge
- отменяет процесс слияния веток и сбрасывает индекс до состояния до начала слияния, при этом сохраняя изменения в рабочей директории.git reset --merge <id_commit>
- отменить слияние веток до указанного коммита (указывать тот коммит который был до слияния).
Откладывание изменений
git stash
- откладывает текущие изменения в рабочем каталоге.git stash list
- показывает список всех отложенных изменений.git stash pop
- восстанавливает и удаляет последние отложенные изменения из стека.git stash drop
- удаляет последние отложенные изменения из стека.git stash drop <number>
- удаляет отложенные изменения из стека.git stash clear
- удаляет все отложенные изменения из стека.
Сравнение версий
git diff
- просмотр изменений в файлах до коммита.git diff <file>
- просмотр изменений в файле до коммита.git diff <id_commit>
- просмотр изменений в коммите в сравнении с текущей версией (ID можно указывать от 4 первых символов).git diff <id_commit_1> <id_commit_1>
- просмотр изменений между двумя коммитами в реппозитории.git diff <id_commit_1> <id_commit_1> <file>
- просмотр изменений в файле между двумя коммитами.git blame <file>
- просмотр всех изменений в файле и кем они выполнены.
Отмена изменений
git restore <file>
- отмена изменений в файле до последнего коммита или индекса.git restore --staged <file>
- удаляет файл из индекса.git reset <id_commite>
- сбросить все коммиты до указанного (не включительно) в смешанном режиме (все изменения останутся в рабочем каталоге).git reset --hard
- удалить все незакомиченные изменения (не удаляет созданные файлы).git reset --hard HEAD~1
- сбросить все изменения на один коммит.git reset --hard <id_commite>
- сбросить все коммиты до указанного (не включительно) в жестком режиме (все изменения удалятся, отменить это действие нельзя).git reset --soft <id_commite>
- сбросить все коммиты до указанного (не включительно) в мягком режиме (все изменения останутся в индексе).git reset --mixed <id_commite>
- сбросить все коммиты до указанного (не включительно) в смешанном режиме (все изменения останутся в рабочем каталоге)(аналог предыдущей команды).git clean -f
- удаление незакомиченных новых созданных файлов.git rm -cached <file>
- удаление уже закомиченного файла из отслеживания без удаления самого файла.git rm -r --cached .
- удалит все файлы и папки из индекса, но оставит их в вашей файловой системе. Это может быть полезно, например, если вы хотите добавить файлы в .gitignore и прекратить их отслеживание.git chekout <id_commit> <file>
- восстановить предыдущую закомиченную версию файла.git revert <id_commit>
- отменить коммит (остальные коммиты сохраняются).git revert --no-commit <id_commit>
- отменить коммит не создавая новый коммит после отмены, можно закоммитить всё вместе в конце (остальные коммиты сохраняются).
Другое
.gitignore - файл в котором нужно прописывать файлы и директории для исключения коммита.
Алгоритм создания SSH-ключа
Создаём SSH-ключи при помощи команды:
ssh-keygen -t ed25519 -C "skillbox"
Параметр-t
означает тип ключа, то есть алгоритм цифровой подписи. Параметр-C
означает комментарий, который мы прикладываем к ключу. Можно сказать, это его имя.Нажимаем Enter, пока не закончатся вопросы, написанные в терминале.
В том же терминале выведите данные публичного ключа при помощи команды:
cat ~/.ssh/id_ed25519.pub
Скопируйте в терминале весь отразившийся ключ вида «ssh-ed25519...skillbox».
Зайдите в меню Settings в настройках аккаунта GitHub. Выбираем пункт меню SSH and GPG keys. Нажимаем New SSH key.
Вставляем в поле Key скопированный публичный ключ. Title вписывать не нужно, потому что мы добавили его на этапе генерации ключа. Нажимаем кнопку Add SSH key.
Вернитесь на главную страницу репозитория, который вы создали, и скопируйте SSH-ссылку.
Выполните команды терминала:
cd «путь до папки, куда вы хотите скопировать репозиторий»
git clone «скопированная ранее ссылка на репозиторий»
Обратите внимание, что в пути к папке должны использоваться обычные слеши «/», а не обратные «\». Если вы используете ОС Windows и копируете или просматриваете путь до некоторой папки через GUI, то нужно перевернуть все слеши в другую сторону. Если сообщение об ошибке не появилось, значит, вы успешно создали SSH-ключ. Если после выполнения этих команд вы получили сообщение об ошибке с текстом: «Are you sure you want to continue connecting (yes/no/[fingerprint])?», впишите вариант «yes».