Я собираюсь пойти дальше и ответить, чтобы обобщить знания, которые у меня есть по этому вопросу. В какой-то степени я думаю, что это нерешенная проблема с git. Стандартный ответ: «Не загружать двоичные файлы и метаданные в VCS», но иногда реальность такова, что вам нужно поделиться некоторым количеством информации о конфигурации IDE/компиляции, но вам необходимо поддерживать несколько компиляторов/ОС/версий/и т. д.
Очевидно, что .gitignore
полезен для всего, что действительно зависит от пользователя или сгенерировано компилятором. Вы можете довольно легко определить, какие элементы следует игнорировать, или просмотреть множество списков, доступных в Интернете для разных компиляторов и IDE.
Однако некоторые файлы необходимы, но все же зависят от факторов, которые меняются от пользователя к пользователю или от машины к машине. По моему опыту, .vcxproj
файлы проекта Visual Studio C были нарушителями в этом ключе. Проблема в том, что VS2010 и VS2012 хотят использовать разные версии файла PlatformToolset
. Решение заключалось в использовании условных операторов:
<PlatformToolset Condition="'$(VisualStudioVersion)' == '10.0'">v100</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)' == '11.0'">v110</PlatformToolset>
Я не думаю, что эта идея будет работать в вашем конкретном случае, но, вероятно, она будет работать во многих случаях. В вашей ситуации, я думаю, вы должны решить, какой будет «каноническая» версия (т.е. выбрать компилятор/IDE/версию/компьютер/что угодно по умолчанию), а затем в любой ситуации, которая отклоняется от этого, нужно будет избегать проверки в конфликтующих разделах. . Самый простой способ сделать это — использовать git add -p
либо для всех ваших изменений, либо только для файлов, о которых известно, что они вызывают проблемы. Добавляйте только те части, которые полезны для всех, а для остальных, если они мешают перебазированию или чему-то еще, вы можете либо git stash
их, либо взорвать их с помощью git checkout -- <filename>
после того, как вы закоммитите важные части.
Эта проблема (или, по крайней мере, очень похожая) также поднималась здесь, но на момент написания один ответ не очень полезен. Это также может иметь соответствующее обсуждение, но опять же , истинных решений, относящихся к вашей проблеме, несколько не хватает.
person
pattivacek
schedule
20.03.2014
.vcxproj
(например) мы смогли использовать условный код, чтобы заставить его работать гладко в обеих IDE. - person pattivacek   schedule 12.03.2014git add -p
пригодится и в подобных ситуациях. Это правда, я не сильно возился с файлами решения/проекта, но когда я это делаю, я почти всегда прибегаю кgit add -p
, просто чтобы убедиться, что я не затопчу что-то важное. - person pattivacek   schedule 12.03.2014