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)입니다.

따라서 질문은 TFVCGit입니다.

(사실 TFSGitVCS 옵션 으로 지원합니다 .)

따라서 질문은 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.