mkdir repo.bare
cd repo.bare
git init --bare
инициализирует репозиторий прямо в текущем каталоге без подкаталога .git Это репозиторий, у которого нету рабочей копии.
cd ..
git clone repo.bare repo
команда приведет к клонированию пустого репозитория.
cd repo
git status
git remote -v
теперь у нас есть удаленный репозитория по адресам в repo.bare
date >> initial
git add initial
git commit -m "Initial commit"
git log
git push
Запушили на "удаленный" репозиторий
далее происходит работа команды с удаленным репозиторием или это может быть работа с другого компьютера
чтобы синхронизироваться с удаленным репозиторием делаем
git pull
Правила оформления commit'ов:
- одно изменение один commit
- изменение это решение какой-то одной задачи, багфикс, новая фитча, редизайн
- если задача слишком большая ее следует разбить на подзадачи в отдельных commits
- если еще больше или одновременно с другими задачами, то ведется работа с отдельными ветками branches
- commit не ломает уже имеющихся свойств, приложение продолжает работать не хуже чем раньше
- если предполагается что ближайшая серия коммитов приведет к потере функциональности то лучше сделать отдельную ветку
закоммитили фигню, но пока не опубликовали
git status
расскажет о том что есть один не опубликованный коммит
git reset --hard [commit id] (либо git reset --hard HEAD^)
если не сказать --hard мы откатимся в репозитории на предыдущее состояние, а рабочая копия останется какая и была. Как если бы мы эти изменения сделали, но не закоммитили.
--hard синхронизирует рабочую копию тоже
используем если нужно исправить последний кормит. Фактически мы перекомичиваем тот же самый комит (последний). операция сохраняет время коммита
если мы все же поменяли историю опубликованную в удаленном репозитории то есть git push --force, который перезапишет удаленный репозитория текущим локальным, но это безответственная публикация, ее можно использовать только тогда, когда это не повлияет на других разработчиков.
Комментариев нет:
Отправить комментарий