Главная страница
Навигация по странице:

  • Все команды, приведённые ниже можно выполнять ТОЛЬКО если коммиты еще не были отправлены в удалённый репозиторий.

  • Консольные команды Git. Консольные команды Git Создать новый репозиторий


    Скачать 20.36 Kb.
    НазваниеКонсольные команды Git Создать новый репозиторий
    АнкорКонсольные команды Git
    Дата16.06.2022
    Размер20.36 Kb.
    Формат файлаdocx
    Имя файлаКонсольные команды Git.docx
    ТипДокументы
    #597063


    Консольные команды Git

    Создать новый репозиторий

    git init # создать новый проект в текущей директории

    git init folder-name # создать новый проект в указанной директории

    Просмотр изменений


    git status # показать состояние репозитория (отслеживаемые, изменённые, новые файлы и пр.)

    git diff # сравнить рабочую директорию и индекс (неотслеживаемые файлы ИГНОРИРУЮТСЯ)

    git diff --color-words # сравнить рабочую директорию и индекс, показать отличия в словах (неотслеживаемые файлы ИГНОРИРУЮТСЯ)

    git diff index.html # сравнить файл из рабочей директории и индекс

    git diff HEAD # сравнить рабочую директорию и коммит, на который указывает HEAD (неотслеживаемые файлы ИГНОРИРУЮТСЯ)

    git diff --staged # сравнить индекс и коммит с HEAD

    git diff master feature # посмотреть что сделано в ветке feature по сравнению с веткой master

    git diff --name-only master feature # посмотреть что сделано в ветке feature по сравнению с веткой master, показать только имена файлов

    git diff master...feature # посмотреть что сделано в ветке feature с момента (коммита) расхождения с master

    Добавление изменений в индекс


    git add . # добавить в индекс все новые, изменённые, удалённые файлы из текущей директории и её поддиректорий

    git add text.txt # добавить в индекс указанный файл (был изменён, был удалён или это новый файл)

    git add -i # запустить интерактивную оболочку для добавления в индекс только выбранных файлов

    git add -p # показать новые/изменённые файлы по очереди с указанием их изменений и вопросом об отслеживании/индексировании

    Удаление изменений из индекса


    git reset # убрать из индекса все добавленные в него изменения (в рабочей директории все изменения сохранятся), антипод git add

    git reset readme.txt # убрать из индекса изменения указанного файла (в рабочей директории изменения сохранятся)

    Отмена изменений


    git checkout text.txt # ОПАСНО: отменить изменения в файле, вернуть состояние файла, имеющееся в индексе

    git reset --hard # ОПАСНО: отменить изменения; вернуть то, что в коммите, на который указывает HEAD (незакомиченные изменения удалены из индекса и из рабочей директории, неотслеживаемые файлы останутся на месте)

    git clean -df # удалить неотслеживаемые файлы и директории

    Коммиты


    git commit -m "Name of commit" # зафиксировать в коммите проиндексированные изменения (закоммитить), добавить сообщение

    git commit -a -m "Name of commit" # проиндексировать отслеживаемые файлы (ТОЛЬКО отслеживаемые, но НЕ новые файлы) и закоммитить, добавить сообщение

    Отмена коммитов и перемещение по истории


    Все коммиты, которые уже были отправлены в удалённый репозиторий, должны отменяться новыми коммитами (git revert), дабы избежать проблем с историей разработки у других участников проекта.

    git revert HEAD --no-edit # создать новый коммит, отменяющий изменения последнего коммита без запуска редактора сообщения

    git revert b9533bb --no-edit # то же, но отменяются изменения, внесённые коммитом с указанным хешем (b9533bb)

    Все команды, приведённые ниже можно выполнять ТОЛЬКО если коммиты еще не были отправлены в удалённый репозиторий.

    # ВНИМАНИЕ! Опасные команды, можно потерять незакоммиченные изменения

    git commit --amend -m "Название" # «перекоммитить» изменения последнего коммита, заменить его новым коммитом с другим сообщением (сдвинуть текущую ветку на один коммит назад, сохранив рабочую директорию и индекс «как есть», создать новый коммит с данными из «отменяемого» коммита, но новым сообщением)

    git reset --hard @ # передвинуть HEAD (и ветку) на предыдущий коммит, рабочую директорию и индекс сделать такими, какими они были в момент предыдущего коммита

    git reset --hard 75e2d51 # передвинуть HEAD (и ветку) на коммит с указанным хешем, рабочую директорию и индекс сделать такими, какими они были в момент указанного коммита

    git reset --soft @ # передвинуть HEAD (и ветку) на предыдущий коммит, но в рабочей директории и индексе оставить все изменения

    git reset --soft @2 # то же, но передвинуть HEAD (и ветку) на 2 коммита назад

    git reset @ # передвинуть HEAD (и ветку) на предыдущий коммит, рабочую директорию оставить как есть, индекс сделать таким, каким он был в момент предыдущего коммита (удобнее, чем git reset --soft @, если индекс нужно задать заново)

    # Почти как git reset --hard, но безопаснее: не получится потерять изменения в рабочей директории

    git reset --keep @ # передвинуть HEAD (и ветку) на предыдущий коммит, сбросить индекс, но в рабочей директории оставить изменения, если возможно (если файл с изменениями между коммитами менялся, будет выдана ошибка и переключение не произойдёт)

    Временно переключиться на другой коммит


    git checkout b9533bb # переключиться на коммит с указанным хешем (переместить HEAD на указанный коммит, рабочую директорию вернуть к состоянию, на момент этого коммита)

    git checkout master # переключиться на коммит, на который указывает master (переместить HEAD на коммит, на который указывает master, рабочую директорию вернуть к состоянию на момент этого коммита)

    Переключиться на другой коммит и продолжить работу с него


    Потребуется создание новой ветки, начинающейся с указанного коммита.

    git checkout -b new-branch 5589877 # создать ветку new-branch, начинающуюся с коммита c хешем 5589877 (переместить HEAD на указанный коммит, рабочую директорию вернуть к состоянию, на момент этого коммита, создать указатель на этот коммит (ветку) с указанным именем)

    Восстановление изменений


    git checkout 5589877 index.html # восстановить в рабочей директории указанный файл на момент указанного коммита (и добавить это изменение в индекс) (git reset index.html для удаления из индекса, но сохранения изменений в файле)

    Ветки


    git branch # показать список веток

    git branch -v # показать список веток и последний коммит в каждой

    git branch new_branch # создать новую ветку с указанным именем на текущем коммите

    git branch new_branch 5589877 # создать новую ветку с указанным именем на указанном коммите

    git branch -f master 5589877 # переместить ветку master на указанный коммит

    git branch -f master master2 # переместить ветку master на 2 коммита назад

    git checkout new_branch # перейти в указанную ветку

    git checkout -b new_branch # создать новую ветку с указанным именем и перейти в неё

    git checkout -B master 5589877 # переместить ветку с указанным именем на указанный коммит и перейти в неё

    git merge hotfix # влить в ветку, в которой находимся, данные из ветки hotfix

    git merge hotfix -m "Горячая правка" # влить в ветку, в которой находимся, данные из ветки hotfix (указано сообщение коммита слияния)

    git merge hotfix --log # влить в ветку, в которой находимся, данные из ветки hotfix, показать редактор описания коммита, добавить в него сообщения вливаемых коммитов

    git merge hotfix --no-ff # влить в ветку, в которой находимся, данные из ветки hotfix, запретить простой сдвиг указателя, изменения из hotfix «останутся» в ней, а в активной ветке появится только коммит слияния

    git branch -d hotfix # удалить ветку hotfix (используется, если её изменения уже влиты в главную ветку)

    git branch --merged # показать ветки, уже слитые с активной

    git branch --no-merged # показать ветки, не слитые с активной

    git branch -a # показать все имеющиеся ветки (в т.ч. на удаленных репозиториях)

    git branch -m old_branch_name new_branch_name # переименовать локально ветку old_branch_name в new_branch_name

    git branch -m new_branch_name # переименовать локально ТЕКУЩУЮ ветку в new_branch_name

    git push origin :old_branch_name new_branch_name # применить переименование в удаленном репозитории

    git branch --unset-upstream # завершить процесс переименования

    Теги


    git tag v1.0.0 # создать тег с указанным именем на коммите, на который указывает HEAD

    git tag -a -m 'В продакшен!' v1.0.1 master # создать тег с описанием на том коммите, на который смотрит ветка master

    git tag -d v1.0.0 # удалить тег с указанным именем(ами)

    git tag -n # показать все теги, и по 1 строке сообщения коммитов, на которые они указывают

    git tag -n -l 'v1.*' # показать все теги, которые начинаются с 'v1.*'

    Временное сохранение изменений без коммита


    git stash # временно сохранить незакоммиченные изменения и убрать их из рабочей директории

    git stash pop # вернуть сохраненные командой git stash изменения в рабочую директорию


    написать администратору сайта