Как я могу управлять перекрывающимися репозиториями в git, включая файлы в одном каталоге? - PullRequest
2 голосов
/ 12 октября 2011

У меня есть сложное хранилище, где иногда логические границы между сегментами кода пересекают границы каталогов.Иногда один файл в каталоге X действительно должен идти с файлами в каталоге Y.

Например, представьте, что у меня есть центральное репо, которое выглядит так:

a/foo
a/bar
b/baz1
b/baz2

... и яхочу, чтобы мой локальный репозиторий заканчивался a/* и b/baz1, но не b/baz2.Остальные файлы должны оказаться в другом хранилище.

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

Могу ли я использовать git для этого?

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

Вы можете сделать это с помощью функции Git sparse checkout (если эта ссылка все еще не работает, попробуйте эту или посмотрите man git-read-tree).Выполните следующие команды в своем клонированном репозитории:

git config core.sparsecheckout true
echo '*' >.git/info/sparse-checkout
echo '!b/baz2' >>.git/info/sparse-checkout
git read-tree --reset -u HEAD

Это удалит существующий файл b/baz2 из вашего локального рабочего каталога.Он все еще находится в хранилище, но ваш локальный Git не будет заботиться о том, что он ушёл из рабочего каталога.

0 голосов
/ 12 октября 2011

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

Если честно, я не совсем вижу проблему.

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