Skip to main content 41q.ru

Шпаргалка По Гиту

Указать имя пользователя и почтовый адрес локально (в рамках текущего репозитория)

Удобно, если есть личные репозитории и рабочие на одной машине.

shell code snippet start

git config --local user.name "Nick"
git config --local user.email "e@41q.ru"

shell code snippet end

Посмотреть

Локальные параметры

shell code snippet start

git config --local user.name 
Nick
git config --local user.email
e@41q.ru

shell code snippet end

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

shell code snippet start

git branch

shell code snippet end

Какие ветки были удалены, но еще не очищены

shell code snippet start

git branch -a

shell code snippet end

Список веток в удаленном репозитории

shell code snippet start

git ls-remote --heads origin 'release/*'

shell code snippet end

Содержимое stash

shell code snippet start

git stash show -p stash@{0}

shell code snippet end

удалённые репозитории

shell code snippet start

git remote -v

shell code snippet end

Историю изменения файла

shell code snippet start

git log -- README.md

shell code snippet end

аргумент назначение
-v (verbose) более подробно
-p (patch) с диффом

Посмотреть полную историю файла

shell code snippet start

git log -p -- README.md

shell code snippet end

Ветки

Переключиться на существующую ветку

shell code snippet start

git switch <branch>

shell code snippet end

Создать новую ветку

на основе текущей

shell code snippet start

git switch -с <branch>

shell code snippet end

на основе удаленной

shell code snippet start

git switch -c <new-branch> [<start-point>]

shell code snippet end

stackoverflow

Переименовать ветку

Для переименования локальной ветки используется параметр -m (или --move):

sh code snippet start

git branch -m old_branch new_branch

sh code snippet end

Чтобы переименовать ветку на удалённом сервере

Требуется удалить старую ссылку на удалённую ветку и создать новую.

Для удаления старой удалённой ветки выполните следующую команду:

sh code snippet start

git push origin --delete old_branch

sh code snippet end

Затем отправьте обновлённую ветку обратно на удалённый репозиторий:

sh code snippet start

git push origin new_branch

sh code snippet end

Отменить последний коммит

shell code snippet start

git reset HEAD~1

shell code snippet end

больше о git reset (selectel.ru/blog)

Cклонировать репозиторий

По-умолчанию, в текущей директории будет создана директория по-названию репозитория (gigachain)

shell code snippet start

git clone git@github.com:ai-forever/gigachain.git
Cloning into 'gigachain'...

shell code snippet end

можно указать произвольную директорию

shell code snippet start

git clone git@github.com:ai-forever/gigachain.git gChain
Cloning into 'gChain'...

shell code snippet end

git постоянно просит ввести пароль, хотя ssh-ключ вроде как настроен

Надо посмотреть, как указан удаленный репозиторий. Если указан протокол https, то всегда будет использоваться https, а там спрашивается логин и пароль.

Проверить это можно, посмотрев удаленные репозитории:

shell code snippet start

% git remote -v
gitverse	https://gitverse.ru/sc/....git (fetch)
gitverse	https://gitverse.ru/sc/....git (push)

shell code snippet end

Можно удалить этот репозиторий

shell code snippet start

% git remote remove gitverse

shell code snippet end

А потом, добавить заново:

shell code snippet start

% git remote add gitverse ssh://git@gitverse.ru:2222/....git

shell code snippet end

И ещё проверить файл ~/.ssh/config, чтобы там был указан тот же ключик, что заведен на удаленном репозитории.

shell code snippet start

% cat ~/.ssh/config
Host gitverse.ru
  User --my-username--
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519_my-identity-file

shell code snippet end