Если у вас есть
.../
parent/
project1/
project2/
и все они имеют конфигурацию remote
, то наиболее вероятная ситуация заключается в том, что
(1) Существует каталог .../parent/.git
, который отображает parent
и все его подпапки как рабочее дерево одного репо
(2) Не существует каталогов .../parent/project1/.git
или .../parent/project2.git
, которые бы отображали каждую папку проекта в свой собственный репозиторий git
Если раньше они вели себя как независимые репозитории, но не больше, то кажется, что каталог parent/.git
каким-то образом был создан (возможно, через git init
), и каким-то образом .git
. каталоги были удалены.
Быстрый отказ от ответственности: я считаю очень маловероятным, что папки проектов .git
были случайно удалены. В приведенном ниже совете принимается ситуация, представленная на первый взгляд, и поэтому она является недействительной, если замечания, изложенные в вопросе, являются неточными или если некоторые «мелкие детали» были опущены.
Тем не менее ... если вышеупомянутое действительно каким-то образом произошло, то удаление каталогов .git
является значительной потерей данных (по крайней мере, локально). К счастью, git remotes можно рассматривать как своего рода «резервное копирование» большинства локальных данных, поэтому, если вы недавно синхронизировались с каждым удаленным проектом, вы сможете восстановить без особых хлопот. [тысяча сто тридцать одна]
Итак, первое, что я хотел бы сделать, оставив пока parent
в покое, создать новый родительский каталог (например, .../parent2
). В этом каталоге создайте новые клоны каждого репозитория проекта с удаленного компьютера.
Далее вы бы сравнили, что находится в каждом каталоге проекта в parent2
с тем, что находится в соответствующем каталоге в parent
. (Вы можете использовать git diff
или какой-либо другой инструмент для массовых различий, например, Beyond Compare.) И то, что вы делаете от этого, зависит от того, что вы найдете.
Если все проекты идентичны, значит, вам повезло; Вы можете просто стереть старую папку parent
и переместить проекты из новой папки parent
обратно в их исходные местоположения, и продолжить с этого места.
Если есть различия, вам, возможно, придется посмотреть, есть ли у вас локальные изменения не на пульте, есть ли на пульте изменения, которых у вас не было локально, или и то, и другое. Локальные изменения, не относящиеся к удаленному, могут быть зафиксированы в рамках коммитов (очевидно, случайного) монорэпо, которое вы в настоящее время имеете в parent
- в этом случае их можно извлечь, используя git filter-branch
с --parent-filter
, а затем перенести в отдельный проект репо должны быть объединены любым способом, который имеет смысл. Или отдельные изменения могут быть потеряны, и вам, возможно, придется просто обновить отдельные состояния репозиториев, чтобы отразить ваши самые новые изменения.
И одно особое соображение - может быть, что одна (или более) из вновь клонированных копий содержат всю структуру parent
. Это может произойти, если в какой-то момент вы задали URL-адрес репо parent
, как если бы он был URL-адресом для конкретного проекта. Поиск в истории может выявить момент, когда это произошло.
Ни одна из этих процедур очистки не прописана на 100%, потому что слишком много неизвестно о том, что вы найдете в процессе повторного клонирования, и последующие шаги зависят от того, что вы найдете.
Спасибо за предложения.
Я попробовал Хромой подход сначала, который работает хорошо кроме тех случаев, когда разница между изображениями является очень небольшой. Я не мог найти, "улучшают различия" опция иметь очевидные значения, и гистограмма также только дает грубое представление различий.
В конце я использовал ImageMagick что-то, что я установил только что и забыл все о. Создание изображения различия/сравнения так же легко как ввод:
compare first.jpg second.png difference.gif
в командной строке.
Это все приятно объяснено здесь.
Вы могли сделать намного хуже, чем Перцептивный Различный.
TortoiseIDiff является средством просмотра разности бесплатной картинки:
http://tortoisesvn.tigris.org/TortoiseIDiff.html
Это - часть TortoiseSVN, но может использоваться без Подверсии.
В зависимости от Вашего проекта не все файлы, которые являются объектом управления версиями, являются текстовыми файлами. Скорее всего, у Вас будут изображения также, например, снимки экрана и схемы для documentation/helpfile.
Для тех файлов не возможно использовать инструмент разности общего файла, потому что они только работают с текстовыми файлами и разностью линию за линией. Вот то, где инструмент Tortoise Image Diff (TortoiseIDiff) приходит на помощь. Это может показать два изображения бок о бок или даже показать изображения друг по другу смешанная альфа.
Используйте редактор изображений как Photoshop или Калека или что бы то ни было, который имеет несколько слоев. Создайте изображение где каждое исходное изображение в отдельном слое.
На данном этапе можно визуально сравнить изображения путем отключения видимости верхнего слоя и на.
В большинстве достойных редакторов можно также установить верхний слой на режим "различия". Теперь значение каждого пикселя изображения является абсолютной разностью пиксельных значений в основных изображениях. Можно использовать, например, инструмент гистограммы, чтобы видеть, идентичны ли изображения. Если они будут идентичны, то все пиксельные значения будут точно 0.
Для материала как это я люблю netpbm
/pbmplus
инструментарий. Можно использовать djpeg
и pnmtoplainpnm
преобразовать каждое изображение в простой формат ASCII. Вы затем просто читаете оба файла и испускаете новое изображение, которое показывает, где пиксели отличаются. Вы могли, например, вычислить Евклидово расстояние в пространстве RGB между старыми и новыми пикселями и испустить белый пиксель для нулевого различия, светло-серого для небольшой разницы, более темной для больших различий, и так далее. Формат ASCII прост и хорошо документируется на страницах справочника, и все стандартные программы средства просмотра могут просмотреть его непосредственно.
Последняя версия Слияния Araxis сделает изображение diffs (http://www.araxis.com/merge/topic_comparing_image_files.html).
К сожалению, это не бесплатное приложение поэтому, готовы ли Вы заплатить за него, другая вещь...