Как обновить символьные c ссылки в git - PullRequest
2 голосов
/ 08 января 2020

Мне нужно было создать символические c ссылки / ссылки на файл из одного хранилища в другое.

Я нашел решение git: символическая ссылка / ссылка на файл во внешнем хранилище , который работал у меня частично. Но проблема с этим решением заключается в том, что хотя ссылка была создана, она, похоже, связана с одним коммитом файла. После того, как файл обновлен, зафиксирован и отправлен, я не вижу изменений, отраженных в другом хранилище.

Кто-нибудь знает другой способ создания символической c ссылки на файл в другом хранилище в git, это будет работать как ссылка c в linux?

1 Ответ

2 голосов
/ 13 января 2020

Это действительно неправильное понимание того, как работают подмодули, а не проблема с символическими ссылками. Я настоятельно рекомендую прочитать главу Субмодули в Pro Git.

Для целей этого объяснения давайте определим несколько терминов:

  • A будет хранилищем, содержащим цель вашей символической ссылки (сама ссылка).
  • B будет хранилищем, содержащим источник этой символической ссылки.
  • C будет подмодуль в A ссылается на B.

Итак, вы сделали git submodule add B из A, создав C, а затем сделали что-то вроде ln -s B/file file, так что вы получили символическая ссылка в A, называемая file, указывающая на file в пределах C. Все работает.

Проблема, как описано, заключается в том, что вы затем обновляете file в B и pu sh, которые меняются, однако в A символическая ссылка по-прежнему показывает исходное содержимое file. Проблема в том, что C является просто клоном B: Как и любой другой клон репозитория, содержимое на диске не изменяется при изменении того, из чего они были клонированы (например, если вы клонируете репозиторий из github, а затем кто-то обновляет, что репозитории на github файлы на вашем локальном компьютере не изменяются). Решение состоит в том, чтобы обновить C и A: Go до C, вытянуть нужные изменения из B, затем go в A и зафиксировать изменение в подмодуле.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...