Справка по Git
Распределённая система управления версиями
Скачать
Основные команды
git init
- проинициализировать репозиторий в текущей папке
git status
- показывает текущий статус
git add
- отслеживает изменения файловgit add index.html
- добавляет index.htmlgit add .
- добавит в индекс все файлы, в которых были изменения, а также новые файлы
git commit
- сохраняет изменения в коммитgit commit -m 'commit message'
- создает коммит с сообщениемgit commit –am 'commit message'
- одновременно проиндексирует файлы (за которыми ведется слежка ) и закоммитит их
git push
- заливает текущие локальные коммиты в удаленный репозиторий
git pull
- забирает изменения с удаленного репозитория в локальный
git clone
- клонирует проект с удаленного репозитория
git diff branch-1 branch-2
- отобразить различие между двумя ветками
git branch
- показывает список ветокgit branch branch-name
- создает новую ветку branch-namegit branch –m OLD_branch-name NEW_branch-name
- переименовывание веткиgit branch -d branch-name
- удаляет ветку branch-name
git checkout
- переключается на другую веткуgit checkout branch-name
- переключается на последний коммит в ветке branch-namegit checkout -b branch-name
- создает и переключается на ветку branch-name
git merge
- совмещает текущую ветку с выбраннойgit merge branch-name
- совмещает текущую ветку с branch-name
git reset [commit]
- отменить все изменения после указанного commitgit reset --hard [commit]
- отменить все изменения после указанного commit с очисткой историиgit reset --soft HEAD~1
- отменить последний коммит и вернуть файлы коммита в состояние Index (Staging)
git restore --staged <file>
- убрать файл из Index (Staging) в "измененные"git restore <file>
- отменить изменения файла в директории
git log --follow [file]
- журнал изменений, отображает историю версий указанного файлаgit log -3 --stat
- информация о трех последних коммитахgit reflog
- используется для записи всей истории, содержит информацию о всех выполненных и отмененных коммитах, предоставляет буфер на определенное время, в которое можно восстановить все, например удаление ветки, перебазирование, сброс.
git show [commit]
- отобразить метаданные содержимого, относящегося к указанному commit
git config
- конфигурация и параметры gitgit config --global user.name
- показывает имя пользователяgit config --global user.name 'new user'
- изменяет имя пользователяgit config --global user.email
- показывает email пользователяgit config --global user.email 'test@mail.ru'
- изменяет email пользователяgit config --get remote.origin.url
- показать адрес репозитория
git tag [commit id]
- установить тэг на указанный commitgit tag -a <tag_name> -m "message"
- установить тэг с аннотацией
Git Tag
git tag v3.1.1 develop
- установить тег v3.1.1
на ветку develop
git push origin v3.1.1
- залить в репозиторий тег v3.1.1
git tag -d v3.1.1
- удалить тег v3.1.1
в локальной копииgit push --delete origin v3.1.1
- удалить тег v3.1.1
из удаленного репозитория
Git Stash
Stash используется для временного сохранения изменений текущей директории, чтобы предоставить возможность переключиться на другую ветку без переноса этих изменений.
git stash --list
- отобразить список изменений в stashgit stash show 0
- отобразить изменения в Stashgit stash show -p 0
- отобразить изменения и контект в нулевом Стэшеgit stash apply 0
- вернуть изменения из Stashgit stash branch new-branch 0
- создать новую ветку из Stashgit stash pop
- удалить последний Stashgit stash clear
- очистить весь Stash
git remote set-url origin gitlab.antroot.ru/newrepo
- задать (новый) URL для репозитория
git checkout -b <branch-name>
- создать новыую ветку в локальном репозитории и переключиться на нееgit push <remote-name> <branch-name>
- загрузить ветку в дальний репозиторий
git rm -r --cached . && git add . && git commit -am "Remove ignored files"
- удалить файлы из нового файла .gitignore
git branch --merged >/tmp/merged-branches && vi /tmp/merged-branches && xargs git branch -d </tmp/merged-branches
- удалить все локальные ветки, которых нет в дальнем репозитории
git fetch origin && git reset --hard origin/master
- сброс локальной ветки до состояния дальней ветки
git reset --soft HEAD~3 && git commit
- выполнить squash трех последних коммитов
Продвинутые команды Git
Отобразить сводку графа из всех веток в проекте:
git log --all --decorate --oneline --graph
То же самое можно добавить как alias lograf
в конфигурацию:
git config --global alias.lograf "log --all --decorate --oneline --graph"
Отображение информации о конкретной контрольной точке: хэш коммита, автор, дата:
git show <commit hash> git show HEAD git show -stat <commit hash>
Отображение автора последнего изменения каждой строки в репозитории, с датой и хешем:
git blame filename.txt git blame -L 2,4 filename.txt # диапазон строк для отображения git blame -С <commit hash> filename.txt # хэш коммита
Архивирование определенного момента в истории репозитория Git:
git archive -o archive.zip master git archive -o archive.zip <commit hash>
Перемещение файла в репозитории Git с отображением изменений:
git mv filename_old.txt filename_new.txt
Очистка репозитория Git от неотслеживаемых файлов и директорий:
git clean -n # отображение предстоящих удалений git clean -f # удаление файлов git clean -f -d. # удаление файлов и директорий
Удаление файлов и директорий из репозитория Git:
git rm filename.txt git rm -r directoryname
Очистка неверных или устаревших ссылок в локальном репозитории Git:
git prune -n # отображение предстоящих изменений git prune
Отображение изменений в репозитории Git по авторам:
git shortlog
Проверка цифровой подписи GPG (GNU Privacy Guard) коммитов и тегов:
git verify-commit <commit hash> git verify-tag <tag>
Состояние файлов в репозитории Git
Файлы в репозитории Git могут быть в трех состояниях:
Modified
- измененStaged
- после изменения файл заносится в эту областьCommitted
- файл считается примененным, когда из Staged он отправлен в репозиторий
Git hook
Для ускорения работы в Git присутствуют так называемые hook'и - это скрипты, которые срабатывают на действия с Git, которые располагаются в /.git/hooks/
. Наиболее популярными являются