2013-11-11 5 views
2

Short:GitHub не позволяет мне подпапки доступа

GitHub имеет неактивен папку в моем репо, что я не могу доступ. Меня это беспокоит, так как изменения моего кода в этих папках!

Long:

Я занимаюсь разработкой веб-приложений ZF2 и использовать мерзавца для управления версиями. ZF2 является модульным, поэтому где-то (скорее всего, с composer.phar или, возможно, с git-клоном) я загрузил некоторые модули ZF2 в подпапки проектов. Одним из таких модулей ZF2 является vendor/coolcsn/csn-user. Я внес изменения в этот модуль ZF2.

Проблема 1: когда я бегу статус GIT, я получаю это:

$ git status 
# On branch master 
# Changes not staged for commit: 
#  modified: vendor/coolcsn/csn-user (modified content, untracked content) 

Когда я бегу мерзавец фиксации, она говорит: «Никаких изменений не было добавлено к совершению». И я определенно внес некоторые изменения.

Итак, я обнаружил, что могу изменить свой каталог на vendor/coolcsn/csn-user и выполнить git status и git совершить там. Затем я могу вернуться в корневую директорию проекта и выполнить git. Тогда все в порядке .... до:

Задача 2: Пока я не сделаю git push к GitHub. На GitHub мой весь проект, кажется, на месте, но vendor/coolcsn/csn-user недоступен на GitHub! Он выглушен. Я не могу нажать на него. Это заставляет меня плакать. Я не знаю, почему, и я не знаю, что случилось. Я кое-что прочитал о подмодулях git. Я не знаю, есть ли у меня подмодули git или если они что-то другое. Я не сознательно сам настраивал какие-либо подмодули. В любом случае, я обеспокоен тем, что мои изменения в подмодулях GitHub не отслеживаются, или если их отслеживают, они скрыты, недоступны для просмотра.

Возможное решение № 1: Я думал, что могу удалить папку .git в подмодулях (если они являются подмодулями) и просто выполнить прямые коммиты в GitHub, а папка csn-user, возможно, не будет выделена серым цветом. Но прежде чем я это сделаю, я слышал, что это нецелесообразно, и я хотел проверить, что все это происходит, и как бы то ни было, я могу правильно использовать git и GitHub и подмодули, а также отслеживать мои изменения на в то же время.

В частности, вы найдете набор шагов, инструкций или идей о том, как сохранить доступ к репо и поручить его использование с помощью git и GitHub.

ответ

2

Вы, кажется, используете подмодули в своем репозитории. Запустите git submodule status, чтобы увидеть используемые подмодули.

«Проблема 1», ваше замешательство в совершении ошибок, связано с различием между внесением изменений в корневой репозиторий и в репозиторий подмодуля. Похоже, вы переходите к репозиторию подмодуля, а затем обновляете корневой репозиторий, чтобы указать его подмодуль на этот новый коммит. Это может быть проблематично, если вы не публикуете эти коммиты, потому что никто другой не сможет их найти, а затем проверьте корневой репозиторий и хотите получить подмодули, от которых он зависит.

Github правильно не отображает содержимое этих каталогов, поскольку они являются ссылками на конкретные коммиты в других репозиториях, а не на часть самого корневого репозитория.

Хотя вы можете проверить все эти файлы в своем корневом репозитории, который звучит опасно. тем самым вы уничтожаете информацию о том, откуда взялось содержимое этих подпапок.Никто другой (включая вас в будущем) не сможет легко определить, откуда пришел этот контент, или какую ревизию вы захватили из этих репозиториев.

+1

«... Это может быть проблематично, если вы не публикуете эти коммиты». Именно ... Я в этой ситуации. Я должен редактировать подмодули для своих конкретных бизнес-потребностей, но мои изменения не хранятся в GitHub. Как мне это решить? Развернуть ли я исходные хранилища, а затем обновить ссылки? – Dennis

+0

также, я редактировал файл .gitmodules широко и добавлял в него все мои подмодули. – Dennis

+0

Да, если вы делаете коммиты для подмодулей, которые хотите опубликовать эти изменения, не обязательно публично, но, по крайней мере, где-нибудь, где кто-то, строивший проект, может их снова получить (включая вас, если вам когда-нибудь понадобится переключиться на другой компьютер). Переключение этих подмодулей, чтобы указать на ваши вилки оригиналов, вероятно, является самым простым решением. – Jonah

Смежные вопросы