Основные команды git

Примеры основных команд для работы с git.

Справка

Вывод всей справки:

help

Открыть руководство по отдельной команде (откроется в браузере):

git help add

Показать справку в терминале по отдельной команде:

git add -h

Настройки

Отображение версии:

git --version

Вывод все настройки и файлы где они находятся:

git config --list --show-origin

Указываем свои данные для коммитов:

git config user.name "Ваше имя"
git config user.email your_email@mail_server.domain

Указываем свои данные для коммитов глобально:

git config --global user.name "Ваше имя"
git config --global user.email your_email@mail_server.domain

Вывод текущего имени и E-mail осуществляется схожим образом:

git config user.name
git config user.email
git config user.name ; git config user.email

Проверка соединения с удаленным сервером:

ssh -T username@servername.serverdomain

Репозитории

Инициализация репозитория:

git init

Клонирование:

git clone URL_REPOSITORY
git clone URL_REPOSITORY FOLDER_NAME

Очистка репозитория. Удаление всех локальных неотслеживаемых файлов, останутся только отслеживаемые:

git clean -fd
git clean -fdx (или с параметром -x, это удалит дополнительно и игнорируемые)

Вывод списка удаленных репозиториев:

git remote
git remote -v

Добавление удаленного репозитория:

git remote add REPOSITORY_NAME REPOSITORY_URL

Изменить URL удаленного репозитория:

git remote set-url REPOSITORY_NAME REPOSITORY_URL

Изменить наименование удаленного репозитория:

git remote rename REPOSITORY_NAME_OLD REPOSITORY_NAME_NEW

Получение изменений из удаленного репозитория:

git fetch REPOSITORY_NAME
git fetch REPOSITORY_NAME BRANCH_NAME
 
git pull REPOSITORY_NAME
git pull REPOSITORY_NAME BRANCH_NAME
 
git fetch REPOSITORY_NAME
git merge REPOSITORY_NAME/BRANCH_NAME
 
git fetch --all
git reset --hard REPOSITORY_NAME/BRANCH_NAME (с перезаписью)

Создание новой ветки из удаленного репозитория и переход на неё:

git fetch origin
git checkout -b BRANCH_NAME origin/BRANCH_NAME

Отправка изменений на удаленный сервер:

git push REPOSITORY_NAME BRANCH_NAME

Просмотр информации об удаленном репозитории:

git remote show REMOTE_NAME

Переименование удаленного репозитория:

git remote rename NAME_OLD NAME_NEW

Удаление удаленного репозитория:

git remote rm REPOSITORY_NAME

Игнорирование файлов — .gitignore

Директивы в этом блоке необходимо размещать в файле «.gitignore». Это не команды.

Игнорировать конкретный файл:

file_name.pdf

Исключение всех файлов с расширением «txt»:

*.txt

Отслеживать файл «test.txt» даже если он попадает под исключения в других правилах:

!my_super_file.txt

Игнорировать файл «need_root_ignore.rtf» только в корневой директории (т.е. если он будет в поддиректориях, то он игнорироваться не будет):

/need_root_ignore.rtf

Игнорировать все файлы в директории «no_need_git»:

no_need_git/

Игнорировать все PDF файлы в директории «documents»:

documents/*.pdf

Игнорировать все PDF файлы в директории «documents» и её поддиректориях (т.е. везде где только можно):

documents/**/*.pdf

Коммиты

Вывод состояния репозитория:

git status
git status --short
git status --ignored

Вывод изменений:

git diff

Отмена изменений до последнего коммита:

git checkout file.name

Индексация файлов для коммита:

git add file.name
git add .

Удаление файлов из индекса:

git rm --cached file.name
git reset

Добавление коммита:

git commit -m "Текст коммита".

Добавить подготовленные изменения в предыдущий коммит:

git commit --amend
или
git commit --amend -m "New message test." (меняем сообщение через консоль)
или
git commit --amend -C HEAD (эта команда не изменит сообщение)

Исправить автора последнего коммита:

git commit --amend --no-edit --author "New Name <newname@service.domain>"

Просмотр логов:

git log
git log --pretty=oneline
git log --pretty=format:"%h - %an, %ar : %s"
git log --author=NAME_OR_EMAIL
git log -- PATH_TO_FILE
git show COMMIT_ID:FILE_NAME

Убрать из индекса все подготовленные изменения:

git reset

Сбросить все изменения (подготовленные и нет) до исходного состояния:

git reset --hard

Сбросить все изменения к выбранному коммиту:

git reset --hard COMMIT_ID

Ветки

Список веток:

git branch
git branch -a
git branch -v
git branch --merged
git branch --no-merged

Создание новой ветки:

git branch BRANCH_NAME

Переключение на другую ветку:

git checkout BRANCH_NAME
git checkout -b BRANCH_NAME (создать BRANCH_NAME и переключиться на неё)

Создать ветку на указанном коммите и перейти на неё:

git checkout -b BRANCH_NAME COMMIT_ID

Слияние с текущей веткой (т.е. изменения из «BRANCH_NAME» попадут в текущую активную ветку):

git merge BRANCH_NAME

Удаление отработанной ветки:

git branch -d BRANCH_NAME
git branch -D BRANCH_NAME (если ветка не была влита в другую/отслеживаемую)

Переименование ветки:

git branch -m NEW_BRANCH_NAME (текущая ветка)
git branch -m OLD_BRANCH_NAME NEW_BRANCH_NAME

Показать список удаленных веток:

git remote show REMOTE_REPOSITORY_NAME

Создать локальную ветку на основе «ветки слежения» (примеры ниже делают одно и то же):

git checkout -b BRANCH_NAME REMOTE_REPOSITORY_NAME/BRANCH_NAME
git checkout --track REMOTE_REPOSITORY_NAME/BRANCH_NAME
git checkout BRANCH_NAME

Создать новую удаленную ветку из текущей локальной:

git push REMOTE_REPOSITORY HEAD
или
git push -u REMOTE_REPOSITORY HEAD (чтобы она отслеживала удаленную)

Настойка отслеживания локальной ветки на удаленную:

git branch --set-upstream-to REMOTE_REPOSITORY_NAME/REMOTE_BRANCH_NAME
# или сокращенно:
git branch -u REMOTE_REPOSITORY_NAME/REMOTE_BRANCH_NAME

Удаление ветки на удаленном сервере:

git push REMOTE_REPOSITORY_NAME --delete BRANCH_NAME

Слияние в текущую ветку без коммита (чтобы проверить):

git merge --no-ff --no-commit my-branch
 
--no-commit означает не делать коммит
--no-ff означает сохранение данных о ветке

Сбросить все изменения до состояния удаленной ветки:

git reset --hard REPOSITORY_NAME/BRANCH_NAME

Слить одну ветку в другую откуда угодно:

git merge TARGET_BRANCH_NAME SOURCE_BRANCH_NAME

Полезные ссылки

04.10.2020

Категория(-и): git

# #

Добавить комментарий