Visual Studio 2013을 사용할 때 TFVC (TFS 버전 제어)와 소스 제어용 Git의 큰 차이점은 무엇인가요?


101

Git 대 TFVC 소스 제어에 대한 많은 질문과 답변이 있지만 현재로서는 찾을 수있는 Team Foundation Server / Service에 Git 통합에 대한 답변이 없습니다.

저는 Visual Studio 2013을 사용하여 다양한 언어 (C #, C ++, PHP, Javascript, MySSQL)를 사용하여 녹색 목초지 개발을 시작하고 있습니다. 향후 iOS 개발이있을 예정입니다. 저는 소스 제어를위한 SVN, VSS 및 TFVC에 매우 익숙합니다. 그러나 나는 Git을 사용한 적이 없습니다. 저는 프로세스 관리 / 애자일 개발을 위해 TFS를 선호합니다. 완벽하지는 않지만 Visual Studio에 잘 통합됩니다.

그래서, 제가이 두 시스템을 결정하는 데 도움이되도록 ...

Visual Studio 2013을 사용할 때 소스 제어용 TFVC와 Git의 큰 차이점은 무엇인가요?

  • 내 경우 유일한 이점은 로컬 저장소 (중요하지 않다는 것은 아님) 및 iOS 개발 지원입니까?
  • Git의 유일한 단점은 명령 줄 인터페이스입니다 (일부는 이것이 단점이 아니라고 주장합니다 ;-P).
  • Git 용 Visual Studio 2013 GUI 경험이 있습니까? 명령 줄 인터페이스없이 기본 분기 / 병합을 지원하기에 충분합니까?
  • Git이 Visual Studio 2013에서 사용되는 것을 보여주는 Git에 대한 자세한 시작 가이드가 있습니까? Microsoft에는 기존 Git 리포지토리를 Visual Studio 2013에 통합하는 비디오가 있지만 Git 및 VS 2013으로 처음부터 시작하는 방법을 찾고 있습니다.

여기서 책을 찾고있는 것이 아니라 TFVC와 Git을 모두 사용한 사람들의 몇 가지 중요 사항과 관련 링크 일 수 있습니다.

답변:


115

VS 2013을 사용할 때 소스 제어를 위해 TFS와 Git의 큰 차이점은 무엇입니까?

MSDN에는 Team Foundation 버전 제어와 Git 간의 모든 기능과 차이점에 대한 광범위한 페이지가 있습니다 .

내 경우 유일한 이점은 로컬 저장소 (중요하지 않다는 말은 아님)와 IoS 개발 지원뿐입니까?

아니요, 더 많은 것이 있지만 종종 Git의 고급 시나리오입니다. 로컬 리포지토리, 오프라인 지원 및 히스토리에 대한 전체 로컬 충실도는 매우 강력하며 Visual Studio를 사용하면 즉시 사용할 수 있습니다. 다른 몇 가지 훌륭한 기능도 있습니다! 한 저장소에서 다른 저장소로 분기하고 병합하는 기능은 매우 강력합니다. Pro Git 책 을 찾아 보는 것이 좋습니다 . TFS의 Git은 또 다른 Git 서버 일 뿐이며 표준 Git에있는 거의 모든 기능을 가지고 있습니다.

병합하기 전에 기록을 다시 쓰는 기능을 사용하면 여러 개의 작은 변경 집합을 제거하거나 결합 할 수 있으므로 기록이 더 깨끗하고 사람이 읽기 쉽게 읽을 수 있습니다.

Git의 유일한 단점은 명령 줄 인터페이스입니다 (일부는 이것이 단점이 아니라고 주장합니다 ;-P).

TFVC에는 명령 줄도 있으므로 사람들은 사용하지 않습니다. Git을 사용하고 싶어하고 TFVC보다 더 많은 일을하지 않는 사람들에게는 아마도 UI를 떠날 필요가 없을 것입니다.하지만 멋진 기능을 많이 얻지 못할 것입니다 ...

다른 몇 가지 단점이있을 수 있는데, 대부분 사람들이 익숙한 것과 다르기 때문입니다. 당신이 일을 할 때 git이 무엇을하는지 배우는 데 시간을 할애하지 않는다면 발에 자신을 쏘는 것은 그리 어렵지 않습니다. Rebase 및 Squash와 같은 것은 정말 강력하고 매우 깨끗한 기록을 만들지 만 잘못 사용하면 더 이상 병합 할 수 없다는 문제를 사람들에게 남길 수 있습니다. TFS는 git 저장소에서 매우 어리석은 결정을 내릴 수있는 권한을 제거하기 위해 몇 가지 보안 설정을 적용 할 수 있습니다 .

Windows에서 Git 사용자를위한 매우 멋진 추가 기능은 PoSHGit 입니다. Powershell 명령 줄에서 명령 자동 완성 기능을 제공합니다.

Git 용 VS 2013 GUI 경험이 있습니까? 명령 줄 인터페이스없이 기본 분기 / 병합을 지원하기에 충분합니까?

기본 작동에 필요한 모든 것이 있습니다. 그러나 무슨 일이 일어나고 있는지 알기 위해 여러 가지를 시각화 할 수 있어야합니다. Git 서버와 로컬 리포지토리는 Git 일 뿐이므로 모든 git 클라이언트가 여기에서 도움을 줄 수 있습니다. SourceTree는 여기에서 옵션입니다. Git for Windows 클라이언트는 또 다른 것입니다.

표준 작업, 체크인, 체크 아웃, 병합, 분기 (또는 푸시, 가져 오기, 가져 오기, 커밋, 병합)의 경우 UI가 제대로 작동합니다.

Git이 VS 2013과 함께 사용되는 것을 보여주는 Git에 대한 자세한 시작 가이드가 있습니까? MS에는 기존 Git 리포지토리를 VS 2013에 통합하기위한 비디오가 있지만 처음부터 Git 및 VS 2013으로 시작하는 방법을 찾고 있습니까?

Git부터는 여러 곳에서 사용할 수 있습니다. 다음은 몇 가지 옵션입니다.

다른 좋은 읽기 :

그리고 설치할 가치가있는 몇 가지 도구 :


3
ALM Rangers는 곧 vsarbranchingguide.codeplex.com/releases 에서 TFVC 사용자 용 Git 지침을 릴리스 할 예정 입니다. 현재 베타 릴리스에는 아직 포함되어 있지 않습니다. 다음 배치와 함께 삭제 될 것으로 예상합니다. :).
— jessehouwing

8
내 원래 게시물 이후 거의 1 년이 지난 후, 우리가 Git과 함께 VS2013을 성공적으로 사용하고 있다는 사실을 여러분 모두에게 알리고 싶습니다. 단일 팀 프로젝트에서 여러 저장소를 만드는 기능을 좋아합니다. 병합하는 데 몇 가지 문제가 있습니다. 여러 경우에 자동 병합이 잘못 선택됩니다. 따라서 성공적인 병합처럼 보이는 것은 실제로 그렇지 않습니다. 이제 병합 된 모든 파일을 다시 확인합니다. 또한 병합으로 인해 VS UI에서 오류가 발생하고 오류가 발생하는 특정 인스턴스가 있습니다 (libgit2 병합 충돌). 수정하려면 cmd 프롬프트로 이동하여 git pull (재미 있지 않음)을 실행해야합니다.
— Greg Grater 2014

1
업데이트 4의 일부로 마지막 오류에 대한 수정 사항이 있음을 알고 있습니다. 그리고 이러한 문제가 발생할 수있는 개발자간에 최종 설정이 다른 경우가있었습니다.
— jessehouwing

5
몇 달 전에 삭제 된 이후 업데이트 4가 포함 된 VS 2013을 사용해 왔으며 GUI에서 모든 Git 문제를 수정 한 것 같습니다. 우리는 로컬 저장소를 최신 상태로 유지하는 데 도움이되는 원격 서버에서 정기적으로 가져 오는 습관을 가지고 있습니다. 또한 MS는 최근 제품 백 로그 / 작업 게시판에 대한 몇 가지 긍정적 인 업데이트를 진행했습니다. 이제 보드에서 직접 설명을 편집하고, 할당하고, 상태를 설정하고, 항목의 우선 순위 / 순서를 조정할 수 있습니다.
— Greg Grater

1
"Git vs TFVC"링크는 "Git 사용 시작하기"로 연결됩니다. 이제 TFVC보다 Git을 더 잘 사용해야한다는 뜻입니까? :; D는 새로운 링크를 발견 visualstudio.com/en-us/docs/tfvc/comparison-git-tfvc
— 마틴 슈나이더

17

TFS 에서 많이 사용되는 혼동 된 혼합 용어를 정리하려면

TFS (Team Foundation Server) 는 소스 버전 제어 시스템 (VCS) 구성 요소 를 포함 하는 응용 프로그램 수명주기 관리 도구 입니다.

TFS에서 사용 하는 VCS 구성 요소 는 주로 TFVC (Team Foundation Version Control)입니다.

따라서 질문은 TFVC 대 Git입니다.

(사실 TFS 는 Git 을 VCS 옵션 으로 지원합니다 .)

따라서 질문은 TFVC 대 Git입니다.

jessehouwing은 이것을 자세하게 다루는 훌륭한 답변을 가지고 있습니다.

사용할 것을 선택하는 한, 제 생각에는 Git이 이깁니다.

  1. 가볍습니다. 설치 및 사용이 간단합니다.
  2. 분산 된 특성은 재난에 매우 탄력적이며 누군가는 항상 리포지토리의 복사본을 갖게됩니다.
  3. 오프라인 작업은 간단하며 자신의 전체 저장소로 작업하고 있습니다. 변경 사항을 커밋하고, 되돌리고, 기록을 찾아 볼 수 있습니다. 원격 저장소와 동기화하려는 경우에만 온라인 상태 여야합니다.
  4. TFS에는 변경 상태 (파일 추가, 수정, 파일 삭제)를 저장하고 다른 코드 상태로 전환하는 간단한 방법이 없습니다. (예를 들어, 두 가지 기능에 대해 작업하고 앞뒤로 전환). git에서는 단순히 다른 브랜치를 체크 아웃합니다.

1
TFS에는 브랜치 및 선반 세트 (# 5 허용)가 있으며 원하는 경우 git을 사용하도록 프로젝트를 구성 할 수도 있습니다. TFS VCS에는 #에 대한 명령 줄도 있습니다. 경량은 아니지만 전체 프로젝트 관리 / 버그 추적 / 작업 추적 / 릴리스 관리 / 빌드 관리 / 체크인 정책 / 테스트가 내장되어 있기 때문에 git보다 훨씬 더 많은 기능을 제공합니다.
— Matthew Whited

@MatthewWhited 물론 가능하지만 디렉터리 기반 구현과 git의 그래프 기반 구현으로 인해 git에 비해 매우 번거 롭습니다. 나는 simple그것을 할 방법 이 없다고 언급했다는 것을 주목하라 .
— James Wierzba

@MatthewWhited 또한 추가 애플리케이션 수명주기 도구에 동의하지만 소스 코드 버전 제어 솔루션에 대해서만 답변 범위를 지정하고 있습니다.
— James Wierzba

1
IDK ... TFS는 사용하기 매우 간단합니다. GIT에서 만든 모든 브랜치가 마음에 들지 않지만 모든 사람이 동일한 코드를 하나의 코드로 만들고 일부는 빠르게 변동하고 일부는 느리게 만듭니다.
— Matthew Whited

모르겠다. GIT는 달성하려는 작업에 비해 너무 복잡하고 매우 직관적이지 않습니다 (왜 푸시 요청이 아닌 풀 요청입니까?!). TF 소스 제어는 매우 간단하며 몇 분 안에 팀의 새로운 개발자에게 설명 할 수 있습니다. 또한 로컬에서 일하는 것을 팀 내부에서, 심지어는 개별적으로도 큰 단점으로 간주합니다. 프로젝트를 분기로 흩 뜨리지 않고 Git에서 작업을 잃지 않도록 어떻게 방지합니까? (이를 위해 TFS-ON THE SERVER
— Cesar

4

Git의 유일한 단점은 명령 줄 인터페이스입니다 (일부는 이것이 단점이 아니라고 주장합니다 ;-P).

명령 줄 인터페이스가 불편한 경우 Git에 사용할 수있는 여러 GUI 프런트 엔드가 있습니다. Git 자체에는 실제로 gitkand git-gui-git 용 GUI 라는 저장소 브라우저 GUI 도구가 포함되어 있습니다 . 그런 다음 git-cola , TortoiseGit 및 기타 와 같은 타사 앱이 있습니다 .


2
물론 Visual Studio 자체는 Git 용 GUI를 제공합니다. 그러나 다른 방법으로는 불가능한 일을하기 위해 명령 줄에 뛰어 들고 싶을 때가 항상 있습니다. 모든 Git 명령을 노출하는 GUI는 명령 줄만큼 어렵습니다.
— jessehouwing

명령 줄 전동 공구가 있습니다. 예를 들어 존재에서 분기를 완전히 제거하는 것입니다.
— 엔지니어
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.