Задать вопрос
@kkolorid

Может ли удаленный репозиторий быть сразу и рабочей директорией проекта?

Может ли удаленный репозиторий быть сразу и рабочей директорией проекта? Каким образом действовать, когда файлы у меня лежат локально, я хочу создать на сервере возможность работать несколькими разработчиками. Доступы все дал. Создаю на сервере репозиторий git init. Создаю у себя репозиторий, добавляю удаленный, пытаюсь отправить туда первый коммит ветки main. Ни пуш ни пулл не работают. Одна ругатся, что сначала запуль изменения, другая, что не вижу, что пулить. Я может что-то не понимаю и возможность работать только через git init --bare на сервере? А потом уже как-то получается в рабочую дерикторию нужно пуллить, где я проект собираю? Схема: удаленный репозиторий, рабочий сервер и разработчики, так? Разве я не могу объединить удаленный репозиторий и рабочий сервер в таком случае?
  • Вопрос задан
  • 147 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Вы некорректно поставили вопрос. Никакой репозиторий не может быть рабочим каталогом. Рабочий каталог репозитория и сам репозиторий это разные сущности и лежат в разных местах. Обычно репозиторий лежит в подкаталоге .git основного рабочего каталога проекта.

Вы наверное хотели спросить — может ли во внешнем общем репозитории тоже быть свой рабочий каталог?

Да, может, но с некоторыми ограничениями. Например нельзя пушить в ветку вышестоящего репозитория, если она в данный момент там активна и распакована в рабочий каталог. Если в общем репо HEAD стоит на ветке main, то вы легко сможете другие ветки отправить, но main не сможете и получите ошибку. И это логично.

Забирать коммиты вы сможете из любой ветки, даже из активной.

И у вас изначально ошибка вот тут:
Создаю на сервере репозиторий git init. Создаю у себя репозиторий
Для чего? Вы создали две отдельные истории. Даже если в обоих случаях получилась ветка с названием main, это всё равно будут разные ветки без общей истории. Не нужно так делать. Репозиторий следует создавать в одном месте, а затем уже клонировать в другие.

Очень многие наступают на эти же грабли, когда инициализируют репозиторий локально, а затем создают НЕ ПУСТОЙ репозиторий на гитхабе. Потом удивляются, почему не получается их связать. ))

Ни пуш ни пулл не работают.

Причина неработоспособности первого заключается в том, что ветка активна. Второй не функционирует из-за отсутствия коммитов в вышестоящем репозитории, поэтому нечего скачивать.

Поэтому общие репозитории проще делать без рабочего каталога, зачем он там?
Но теоретически можно работать децентрализованно. Допустим если вы все сидите в одном офисе, то можно некоторых коллег добавить как remote со ссылками в локальной сети и спокойно обмениваться коммитами в любую сторону. Почему бы и нет? Вы только не сможете пушить ветки, над которыми коллеги у себя в данный момент работают и не сможете сломать им код.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Может. Вы со своим проектом можете работать в любом каталоге, в корне у вас основные файлы или вложены куда-то глубже - не имеет значения. Из вашего описания вообще не понятно что у вас не получается и что именно вы хотите сделать. Прочитайте ман сначала и просто следуйте по шагам инструкции как работать с гит: gitscm.org
Для работы с репозиторием нескольким разработчикам вам надо настроить рабочий процесс - выдать разработчикам права, настроить организацию/проект в вашем гите, организовать документацию и прочее. Типовой рабочий процесс - github flow. Для работы приложения на сервере настраиваются CI/CD процессы для автоматизации доставки и развёртывания проекта на сервере. Это тоже настраивается отдельно. В разных сервисах этот процесс отличается в деталях, но основные приципы везде одинаковые. Вам просто следует открыть руководство пользователя и прочитать о том, как сделать то, что вы хотите сделать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы