суббота, 11 мая 2024 г.

Git удаленный репозиторий

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 не ломает уже имеющихся свойств, приложение продолжает работать не хуже чем раньше
    • если предполагается что ближайшая серия коммитов приведет к потере функциональности то лучше сделать отдельную ветку
Если мы еще не опубликовали, то переписывать историю можно как угодно (все что между HEAD и origin):

cp /bin/bash .
git add bash
git commit -m "False commit"
git log -p
закоммитили фигню, но пока не опубликовали

git status

расскажет о том что есть один не опубликованный коммит

git reset --hard [commit id] (либо git reset --hard HEAD^)

если не сказать --hard мы откатимся в репозитории на предыдущее состояние, а рабочая копия останется какая и была. Как если бы мы эти изменения сделали, но не закоммитили.

--hard синхронизирует рабочую копию тоже

 

commit id (sha-1) вычисляется от всего содержимого и даже от commit message, поэтому если отредактировать message это будет новый commit.

git commit -amend
используем если нужно исправить последний кормит. Фактически мы перекомичиваем тот же самый комит (последний). операция сохраняет время коммита

если мы все же поменяли историю опубликованную в удаленном репозитории то есть git push --force, который перезапишет удаленный репозитория текущим локальным, но это безответственная публикация, ее можно использовать только тогда, когда это не повлияет на других разработчиков. 


 

Комментариев нет:

Отправить комментарий