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

Как правильно пушить локально в non-bare репозиторий?

Есть локальный репозиторий и его клон, все на одной машине.
Как запушить из клона в origin master?
Выибивает ошибку что non-bare репозиторий.
Создав новый репозиторий теперь уже bare, но я не догоняю как это использовать - получается он содержит не мои исходники, а содержимое папки .git.

Как правильно и безопасно пушить не делая репозиторий bare?
  • Вопрос задан
  • 300 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • ProductStar
    Python + Flask + Git: веб-разработка с нуля
    2 месяца
    Далее
  • Учебный центр IBS
    DEV-007 Введение в систему контроля версий Git
    1 неделя
    Далее
  • Stepik
    Git (система контроля версий)
    1 неделя
    Далее
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
«Пушить локально» это масло масляное. Мы всегда пушим локально, но во внешний (remote) репозиторий. Понятия внешний и локальный тут относительны, так как все репозитории в Git равноправны и могут обмениваться коммитами в любых направлениях. Причём репозитории запросто могут лежать на локальном компьютере. Репозиторий откуда мы выполняем команды push/fetch/pull называется «локальным», а тот откуда/куда передаём данные называется «внешним». Я не люблю перевод слова remote как удалённый, потому что потом возникают дикие конструкции типа «удалить удалённый», которые ломают мозг.

Выибивает ошибку что non-bare репозиторий.

Вы невнимательно читаете текст ошибки. Там ключевое слово current branch in a non-bare repository, т. е. нельзя пушить в текущую ветку, которая в данный момент распакована в рабочем каталоге. В голом репозитории (bare) нет рабочего каталога, поэтому такой проблемы не возникает.

Как правильно синхронизировать ветки репозиториев? Способов много
1. Перед push зайти во «внешний» репозиторий и переключиться в другую ветку.
2. Вместо push из «локального» репозитория можно делать pull, находясь во «внешнем».
3. Можно заставить Git игнорировать проблему, но рабочий каталог «внешнего» репозитория просто не будет актуализироваться сам, нужно будет потом там вручную делать git reset --hard
4. Сделать целевой репозиторий голым, но тогда вы не сможете в него коммитить напрямую.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@aol-nnov
правильно - не пушить в non-bare репозиторий.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
Made In Dream Санкт-Петербург
от 100 000 до 220 000 ₽
от 250 000 до 320 000 ₽