Собрал в одном месте git команды на каждый день, мини справочник, который всегда под рукой.
В планах сделать более серьезный материал по Git, т.к. с ним у многих начинающих, да и не только, разработчиков много проблем и вопросов.
Для тех, кто только начал работу с Git советую прочитать на сайте статью под названием Отправка первого локального проекта на GitHub.
Инициализация нового git-репозитория:
git init
Отобразить статус git-репозитория и рабочего каталога:
git status
Добавить в индекс все измененные файлы:
git add .
Добавить в индекс изменения:
git add <filename>
Удалить файл с внесением в индекс:
git rm <filename>
Переименование файла/перенос в другую директорию с внесением в индекс:
git mv <filename>
Зафиксировать изменения в репозитории, находящиеся в индексе:
git commit -m "<message>"
Комбо:
git commit -a -m "<message>" = git add . + git commit -m "<message>"
История коммитов:
git log
Переход к старому состоянию проекта:
git checkout <hash>
Переход к старому состоянию проекта и удалению последующих фиксаций (параметр --hard
указывает, что рабочий каталог должен быть обновлен в соответствии с новым head ветки):
git reset --hard <hash>
Клонирование проекта из удаленного репозитория
git clone <откуда> <куда>
Примеры git clone:
git clone ssh://dmn@192.168.1.100:22/var/www/superproject/htdocs/.git superproject
git clone /home/username/project myrepo
git clone http://user@somehost:port/~user/repository/project.git
git clone --bare hello hello.git
Последний пример создает т.н. "чистый" репозиторий. "Чистые" репозитории не хранят рабочие каталоги и обычно используются для расшаривания.
Обычный git-репозиторий подразумевает, что вы будете использовать его как рабочую директорию, поэтому вместе с файлами проекта в актуальной версии, git хранит все служебные, "чисто"-репозиториевские файлы в поддиректории .git.
В удаленных репозиториях нет смысла хранить рабочие файлы на диске (как это делается в рабочих копиях), а все что им действительно нужно — это дельты изменений и другие бинарные данные репозитория. Вот это и есть «чистый" репозиторий.
Получение изменений из удаленного репозитория и их слияние с локальным:
git pull
Внесение локальных изменений на удаленный:
git push
Просмотр веток:
git branch
Добавление ветки:
git branch <имя_ветки>
Удаление ветки:
git branch <имя_ветки> -d
Переход между ветками:
git checkout <имя_ветки>
Слияние двух веток:
git merge <имя_ветки>
Дополнительные материалы: