Показать зависимость внешнего кода в Git подмодулем

Решенная проблема: показать зависимость внешнего кода от подмодулей: Благодаря VonC !

Текущая проблема : подмодуль без дублированного содержимого в двух папках

Временное решение текущей проблемы: изменить имя папки на bin-github, поскольку имя папки в качестве подмодуля - bin. Это означает, что мне нужно дублировать содержимое в моем доме.

Моя домашняя папка зависит от ~ /bin. У меня есть файлы, расположенные в HOME в хранилище Masi , а в ~ /bin в хранилище bin в Github. Моя соответствующая структура папок дома:

~
|-- [drwxr-xr-x] bin
    | -- fileA
    ` -- folderA
    ...

Я хотел бы знать, как показать make ~ /bin подмодуль Git в Маси .

Как сделать ~ /bin подмодулем моего Git в ~ /?


# 3 Ответ на комментарий VonC:

Мои .gitmodules

[submodule "bin"]   
         path = bin
         url = git://github.com/masi/bin.git

Я чувствую, что мне больше не нужно снова добавлять подмодуль, поскольку он есть в моих .gitmodules.

Я бегу

Sam master $ git submodule update
Sam master $ git submodule foreach git pull
Sam master $ ls bin 

# 2 Ответ на ответ VonC:

Я изменил свои .gitmodules на следующие, чтобы у меня не было их дубликата в моем доме.

[submodule "bin"]
    path = bin
    url = git://github.com/masi/bin.git

Кажется, что это другая ситуация, так как я не могу извлечь папку submodule-bin, как описано выше.

Теперь я получаю следующее в новом клонированном git-repo

Sam master $ git submodule git init
error: pathspec 'git' did not match any file(s) known to git.
error: pathspec 'init' did not match any file(s) known to git.
Did you forget to 'git add'?                          # I am not sure what this means
Sam master $ git submodule foreach git pull
Sam master $ git submodule update

У меня есть внешний репозиторий в моих .gitmodules. Почему он просит меня git add?


Ответ на ответ VonC:

Я бегу

git submodule add git://github.com/masi/bin.git bin-github-copy

потому что я не могу добавить новый репозиторий с тем же именем, что и моя существующая папка bin.

Мои .gitmodules -

[submodule "bin-github-copy"]
    path = bin-github-copy
    url = git://github.com/masi/bin.git

Я бегу

git clone git://github.com/masi/Sam.git

Я получил пустой каталог bin.

Как я могу получить содержимое корзины?

4 голоса | спросил Léo Léopold Hertz 준영 18 J000000Saturday09 2009, 00:08:04

1 ответ


0

Во-первых, не забывайте, что с помощью Git вы не можете «добавить» каталог, только содержимое хотя бы одного файла в этом каталоге.

Тогда у вас есть два варианта:

  • подмодули , чтобы Маси ссылался на конкретный коммит ваши [ файлы в каталоге ] bin хранится в GitHub (или в последнем коммите ветки, хранящемся в GitHub)

  • слияние поддеревьев , чтобы смешать два репозитория и упростить отслеживание изменений в файлах внутри бина непосредственно из репозитория Masi. Это может быть проще в вашем сценарии.

См. этот ответ , чтобы узнать больше об этих двух стратегиях.


На пути к подмодулям объявление подмодуля - это только половина работы. Вы все еще должны инициализировать свой субмодуль в первый раз с помощью

git submodule git init

Затем вам нужно вытащить свои подмодули :

git submodule foreach git pull

, а затем обновите свой подмодуль

git submodule update

См. также этот практический пример с подмодулями Git, часть I и подмодули Git, часть II .

  

В файле .gitmodules хранятся только пути, но версия фиксации сохраняется вместе с основным проектом.
  Я создал проект на GitHub , чтобы продемонстрировать, что происходит. В частности, посмотрите на этот коммит , в котором добавлен субмодуль: /р>

+Subproject commit 60be4b09f51d2560802ebd744893bb6f737ef57c
ответил VonC 18 J000000Saturday09 2009, 00:48:06

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132