У меня есть структура каталогов, как например:GIT удаления файлов в папках слинкованы, добавляет их на втором пробеге мерзавца добавить -A
-main
-sym-linked-dir
some-file.txt
some-other-file.bar
-sym-linked-dir-2
-some-dir
some-doubly-nested-file.foo
-normal-folder
spam.eggs
pan.cakes
hash.browns
я не у любого слинкован файлов на всех, просто символические папки.
Позволяет сказать, что я внести изменения в spam.eggs, я затем перейти в командную строку и сделать git add -A
- мерзавец будет работать в нормальном режиме, но сказать, что все файлы в папках слинкован будут помечены как удаленные:
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: main/sym-linked-dir/some-file.txt
deleted: main/sym-linked-dir/some-other-file.bar
deleted: main/sym-linked-dir-2/some-dir/some-doubly-nested-file.foo
modified: main/normal-folder/spam.eggs
Untracked files:
(use "git add <file>..." to include in what will be committed)
main/sym-linked-dir/
main/sym-linked-dir-2
Когда я снова запустил git add -A
или git add main/sym-linked-dir
, он добавит папку и все файлы как обычно, как и ожидалось.
Однако, если я затем запустить ДРУГОЙgit add -A
, он будет удалить файлы снова, поочередно.
Например, если бы я сделал git add main/sym-linked-dir
, он добавил бы это, и у меня было бы только 1 невосстановленное изменение и 1 удаленный файл + папка. Если я тогда сделаю git add -A
, это будет untrackmain/sym-linked-dir
, но узнайте еще раз, что он отслеживал sym-linked-dir-2
все время. Я делаю еще git add -A
, и ситуация снова меняется!
Мой конфиг для репо (в .git папке) выглядит следующим образом:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = true
ignorecase = true
hideDotFiles = dotGitOnly
У меня больше ничего не Релевент в моей глобальной конфигурации.
Мой общий вопрос: Как получить git для надежного лечения файлов в символических папках в виде обычных файлов, для всех целей и задач, чтобы не возникало путаное поведение, такое как приведенное выше?
редактировать:
Мой случай использования является то, что у меня есть модуль, который используется двумя (или более) РЕПО локально, поэтому держать их в курсе друг с другом с последним кодом, я просто символизировал некоторые каталоги в обоих случаях - это означает, что всякий раз, когда я обновляю его в одном репо, он обновляется в любом из других, например
-myAwesomeModules
-myModule
some-file.txt
-app1
-modules
-myModule <points to /myAwesomeModules/myModule>
some-file.txt
-app2
-modules
-myModule <also points to /myAwesomeModules/myModule>
some-file.txt
Это похоже на ошибку git. Но в отношении вашего общего вопроса это может быть нелегко. Git хочет отслеживать символические ссылки явно, а не следовать им. –
Какая версия 'git' на какой платформе? – TriskalJM
@TriskalJM '' 'git version 1.9.5.msysgit.1''' на Windows 10 –