저는 SmartGit에 익숙하지 않지만 git을 SVN 클라이언트로 사용할 때의 일반적인 단점을 알고 있습니다.
원격 자식 저장소로 전환하면 branch
및 merge
무거운 워크 플로를 효과적으로 사용할 수 있습니다.
그 의미는 무엇입니까?
SVN에는 일반적으로 모든 작업이 커밋되는 단일 분기가 있습니다. git을 사용하면 훨씬 쉽게 분기하고 병합 할 수 있으므로 여러 분기가있는 워크 플로를 효율적으로 사용할 수 있습니다.
예를 들어 master
브랜치와 development
브랜치를 사용할 수 있습니다. 개발 프로세스가 development
분기에서 이루어지는 동안 안정 버전 만 master
으로 병합됩니다. 또한 특정 주제에 바인딩 된 feature
가지를 만들 수 있으며 주제가 완료 될 때까지 모든 feature
분기에서 모든 커밋을 수행 할 수 있습니다. 기능에 의해 도입 된 변경 사항을 development
브랜치에 병합 한 다음 나중에 master
브랜치에 릴리스로 병합 할 수 있습니다.
SVN 저장소를 사용하는 이유는 무엇입니까?
힘내는 SVN과 다르게 처리합니다. Git에서 병합은 여러 개의 상위 커밋을 가진 커밋입니다. 이것은 SVN에서 불가능합니다. SVN에서 모든 커밋은 단일 상위를가집니다.
그래서 병합 커밋을 SVN 저장소로 푸시하면 병합 기록이 손실됩니다. 병합 기록을 유지하는 동안 동료는 병합 된 분기의 커밋에서 모든 변경 사항을 도입 한 하나의 큰 커밋 만 볼 수 있습니다. 정보를 잃어 버렸습니다.
SVN 저장소와 상호 작용할 때 merge
대신 rebase
만 사용하는 것이 좋습니다.
이것은 SVN보다 원격 자식 저장소를 사용하는 것이 장점입니다. 검색하면 더 많은 것을 찾을 수 있습니다. 순수 망할 놈의 솔루션으로
이 개발 분기를 SVN과 함께 사용할 수 없습니까? 내가 지회를 지키면, 나는 또한 하나의 커밋과 부모에 관한 정보를 유지할 것인가? – rubo77
@Zeeker "SVN에서 분기를 병합 한 다음 커밋을 계속하는 것이 쉽지 않습니다."- WTF! RTFM !!! '--reintegrate'는 1.7에서도 (1.6과 반대로) 브랜치를 사용하는 것을 금지하지 않습니다. 1.8+는 sync-merge를 더 간단하게합니다. –
@LazyBadger Git과 마찬가지로 SVN에 익숙하지 않다는 것을 인정합니다. 이 주제에 관한 정보는 쉽게 할 수 없다는 것이지만, 이것이 변했고 더 이상 사실이 아닐 수도 있습니다. 물론 GNU는 SVN보다 병합과 분기가 훨씬 쉬운 방법을 제공합니다. –