나는이 주제에 관한 지식의 요약을하기 위해 계속해서 대답 할 것입니다. 어느 정도까지, 나는 이것이 git로 해결되지 않은 문제라고 생각한다. 표준 답변은 "VCS에 바이너리와 메타 데이터를 확인하지 마십시오"이지만 IDE/컴파일 구성 정보를 공유해야하지만 실제로는 여러 컴파일러/OS/버전/등을 지원해야합니다.
분명히 .gitignore
은 진정으로 사용자에 종속적이거나 컴파일러에서 생성되는 모든 항목에 유용합니다. 스스로 가장 쉽게 무시할 수있는 가장 좋은 항목을 알아 내거나 다른 컴파일러와 IDE에 대해 많은 lists available online을 볼 수 있습니다.
그러나 일부 파일은 필요하지만 여전히 사용자간에 변경되는 요소에 따라 달라집니다. 내 경험상, Visual Studio C 프로젝트의 .vcxproj
파일이이 공격 대상이었습니다. 문제는 VS2010과 VS2012가 PlatformToolset
의 다른 버전을 사용하려고한다는 것입니다. 해결책은 조건문을 사용하는 것이 었습니다.
<PlatformToolset Condition="'$(VisualStudioVersion)' == '10.0'">v100</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)' == '11.0'">v110</PlatformToolset>
이 아이디어는 귀하의 구체적인 경우에는 효과가 없을 것이라고 생각하지만 많은 경우에 효과가있을 것입니다. 귀하의 상황에, 나는 당신이 "표준"버전 (즉, 기본 컴파일러/IDE/버전/기계/뭐든간에 선택)을 결정해야한다고 생각하고, 그때 어떤 상황에서 충돌 섹션을 확인하지 않도록해야합니다 . 가장 쉬운 방법은 모든 변경 사항이나 문제가있는 것으로 알려진 파일에 대해 git add -p
을 사용하는 것입니다. 모든 사람에게 유용한 부분 만 추가하고, 나머지 부분은 rebase 등으로 방해가되는 경우 git stash
또는 중요한 부분을 다 써서 git checkout -- <filename>
으로 불을 뿜을 수 있습니다.
이 문제 (또는 매우 유사한 문제)도 here으로 제기되었지만 서면으로 답변하는 것은 그리 도움이되지 않습니다. This에는 관련 토론이있을 수도 있지만 문제와 관련된 진정한 해결책은 다소 부족합니다.
2010 년과 2012 년에도 동일한 문제가 있습니다. 2012 년 사용자 중 소수에 불과하므로 위험한 변경 사항을 확인하지 않았습니다. 그것은 거의 일어나지 않으며'.vcxproj' 파일 (예를 들어)에있는 몇 가지 것들을 위해서 우리는 조건부 코드를 사용하여 두 IDE에서 원활하게 작동하도록했습니다. – patrickvacek
우리는 프로젝트의 시작 단계에 있으며 3 번째 커밋마다 프로젝트/솔루션 파일의 실제 변경 내용이 포함 된 것처럼 보입니다. 나는 그 해결책이 나중에는 진정한 대안이 될 것이라고 생각하지 않는다. – dancek
'git add -p'도 이와 같은 상황에 편리합니다. 사실, 솔루션/프로젝트 파일을 많이 엉망으로 만들지는 않겠지 만, 내가 할 때, 나는 항상 중요한 것을 밟지 않도록'git add -p'를 사용합니다. – patrickvacek