Как игнорировать другие каталоги при загрузке / извлечении в git? - PullRequest
2 голосов
/ 21 марта 2019

Изначально наш репозиторий git содержал один подкаталог.Это был код нашего сайта.Теперь мы хотим включить связанные файлы и хранить их все в одном репозитории, но для нашего производственного сервера мы просто хотим git pull/fetch этот исходный подкаталог (то есть code/).

Как настроить git на игнорирование всех других каталогов при выполнении git fetch или git pull?

Я не хочу откидываться;большинство найденных решений предполагают, что я начинаю с нуля.

1 Ответ

1 голос
/ 21 марта 2019

Во-первых, предостережение: каждый из первых двух комментариев по этому вопросу имеет плохой совет [1].

Итак ... fetch не обновляет рабочие файлы.pull выполняет выборку, а затем слияние с HEAD (примерно), и на самом деле это извлечение обновленного HEAD, которое обычно обновляет рабочие каталоги.

Вы можете настроить «разреженную проверку», но пути все еще относительно корня рабочего дерева.То есть, если у вас есть

/
  /other-artifacts
  /website
  file

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

Утверждение «Я не хочу переклонировать» может ограничивать или не ограничивать ваши варианты;без лучшего понимания причины, я не могу решить это.Предполагая, что рабочее дерево репо в настоящее время является каталогом производственного веб-сайта, возврат к новому местоположению, вероятно, (часть) является самым простым способом добраться из того места, где вы хотите, где вы хотите быть, несмотря на перемещение и / илиреконфигурирование существующего репо может быть выполнимым.

Я имею в виду, что если рабочий каталог должен быть поддеревом рабочего дерева репо, то вам, вероятно, нужно, чтобы рабочее дерево репо было где-то еще в файлесистема.Тогда производственный каталог можно заменить символической ссылкой на правильную часть рабочего дерева;или вы можете обновлять его после каждой проверки (с помощью перехвата после проверки).

Другой принципиально иной подход - поместить сам сайт в отдельное репо и сделать его подмодулем более широкого репо.Многие люди нервничают, когда вы начинаете говорить о подмодулях, и это будет значительная переработка - больше, чем просто повторное переселение.

Может показаться, что использование отдельной ветки для рабочей площадки (как это предлагается в комментариях)подход "бедняков" к приближению подмодуля;но делать что-то подобное - просто напрашиваться на неприятности, поскольку любой коммит в ветке «только для производства» будет рассматриваться как удаление всего, что находится за пределами папки сайта, относительно любого достижимого коммита из основной ветки.


[1] Я могу только предположить, что авторы знают, что на самом деле они не дают хорошо продуманных советов, поскольку они решили «отвечать» в комментариях, а не заходить сюда в разделе ответов, где ониподлежит голосованию.

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