Похоже на вопрос Почему я не вижу изменений в удаленном репо после "git push"?
Операция push
всегда связана с распространением истории репозитория и обновлением ссылок, а никогда не касается файлов рабочего дерева .
В частности, если вы нажмете обновить ветку, извлеченную в удаленном хранилище, файлы в рабочем дереве не будут обновлены.
Это предупредительное проектное решение.
Рабочее дерево удаленного репозитория может иметь локальные изменения, и у вас нет возможности разрешить конфликт между передаваемыми вами изменениями и изменениями в рабочем дереве, которые помещаются в удаленное хранилище
Как уже говорилось, голое дистанционное репо здесь лучше.
Вы можете настроить репо без обнажений в том же месте, что и MAIN CODEBASE
, чтобы увидеть изменения в этом «непогашенном репо с основной кодовой базой».
Примечание: с наступающим Git 1.7 , git push
в ветку, которая в данный момент извлечена (т.е. указана HEAD в не репозитории хранилища), по умолчанию будет отказано.
git pull
не должен ничего перезаписывать, по крайней мере, без больших предупреждений . Вы видите какое-нибудь из этих предупреждающих сообщений?
Как kibitzer удачно описывает в комментарии:
bare
означает хранилище, которое не содержит фактические файлы, только метаданные (коммиты). Передача данных в такой репозиторий безопасна, поскольку не возникает несоответствия между состоянием файлов на диске и фиксацией в .git
Тот факт, что это удаленное репо является «пустым» (в нем только папка .git
, но файл не извлечен) не означает, что git clone
приведет к пустому локальному репо .
Он создаст и извлечет начальную ветвь, которая разветвляется из текущей активной ветви клонированного репозитория.
Итак, «архитектура публикации» будет:
/---
| MAIN SERVER : [ BARE-MAIN-REPO ] == (pull only) ==> [ MAIN-REPO ]
\--- ^^ || ^^ ||
|| || || ||
push pull push pull
|| || || ||
/--- || vv || ||
|DEV1 PC : [ DEV1 REPO ] || ||
\--- || ||
|| ||
/--- || vv
|DEV2 PC : [ DEV2 REPO ]
\---
Примечание: если вы ссылаетесь на Git Glossary , то, что означает «origin», является хранилищем upstream по умолчанию.
Bare-main-Repo
является «источником», то есть репо по умолчанию для dev1
и dev2
, то есть оба репо будут созданы путем клонирования Bare-main-Repo
.
(Ничто не мешает вам добавить другие репозитории обратного потока: dev1 может добавить dev2 в качестве другого репозитория обратного потока, например, позволяя извлекать напрямую из dev2)