Подтвердить что ты не робот

Как я разбираюсь с файлами Visual Studio в Git?

Я обычно работаю с .NET с помощью Git для управления версиями. В моей команде мы работаем параллельно, и мы часто обязываем наш код интегрироваться в приложение. Все в порядке, но решение Visual Studio и файлы проекта. Мы нашли два пути:

  • Никогда не записывайте эти файлы, у каждого есть свои
  • Включите этот файл в систему версий

Оба способа имеют плюсы и минусы, но в основном мы боремся каждый раз, когда мы выходим из центрального репо. Вот некоторые запасные вопросы, которые мы обнаружили: (в родительском положении, ссылка на приведенный выше список)

  • Мы должны включить другие файлы в проект (1) или включить наши новейшие (2)
  • Если мы работаем с разными архитектурами (x86/x64), мы должны вручную изменить файлы .csproj (2)
  • Те же вопросы отвечали за ссылки и пакеты NuGet

и т.д. Есть ли подходящий рабочий процесс, который я могу использовать?

4b9b3361

Ответ 1

Обязательные .sln и .csproj файлы обычно являются наилучшей практикой (как в этом ответе), но слияние требует некоторого внимания.
См. " Почему мои файлы .csproj запутались после git rebase?".

*.csproj -text merge=union (см. ниже)
*.sln -text merge=union v

Или вы можете отказаться от .csproj и восстановить их локально как в этом твитте.
Другая причина игнорировать эти файлы csproj - если они были восстановлены, как в этом контексте

yellowblood предупреждает (в комментариях) о серьезном конфликте с файлом csproj, когда используется с помощью стратегии merge=union.
Это повторяет статью " Объединить конфликты в файлах csproj.
Поэтому существует предложение для VS IDE должно поддерживать шаблоны файлов в файлах проекта (чтобы не изменять файл .csproj, если один добавьте новый .cs файл, соответствующий этому шаблону).

Было высказано предположение, что если Visual Studio сначала отсортировала свои элементы, это поможет смягчить проблему.
Это помогает уменьшить случайные конфликты, вызванные очевидными недетерминированными элементами Visual Studio.
Но это не исключает проблемы слияния.

Ответ 2

В нашем проекте мы проверяем их на контроль версий. Мы начали с .gitignore из github и простого файла .gitattributes:

# Auto detect text files and perform LF normalization
* text=auto

# Custom for Visual Studio
*.cs diff=csharp

Это связано с тем, что стратегия слияния union может быть опасна для этих файлов, см. Объединить конфликты в файлах csproj, чтобы узнать, почему это не всегда безопасно и, вероятно, не то, что вы хотите.

Обычно вы получаете конфликты слияния каждый раз, но в Visual Studio они очень легко обрабатываются. Пример: добавление нового пустого проекта в решение и его фиксация, а затем наличие нескольких членов команды, добавляющих в проект разные файлы.

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