TFS에서 Git으로


14

저는 .NET 개발자이며 소스 제어 소프트웨어로 TFS (팀 기반 서버)를 여러 번 사용했습니다. TFS의 좋은 기능은 다음과 같습니다.

  1. Visual Studio와의 우수한 통합 (그래서 거의 모든 것을 시각적으로 수행하며 콘솔 명령은 사용하지 않음)
  2. 간편한 체크 아웃, 체크인 프로세스
  3. 쉬운 병합 및 충돌 해결
  4. 쉬운 자동화 빌드
  5. 분기

이제 Git을 오픈 소스 프로젝트의 백본, 리포지토리 및 소스 제어로 사용하고 싶습니다. 내 프로젝트는 스토리지 메커니즘으로 MySQL 또는 SQL Server 데이터베이스를 사용하는 C #, JavaScript 또는 PHP 언어입니다.

방금이 목적으로 github.com의 도움말을 사용하고 거기에 프로필을 만들고 Git 용 GUI를 다운로드했습니다. 이 부분까지 너무 쉬웠다.

그러나 나는 거의 더 이상 진행하지 않고 있습니다. 다음과 같은 간단한 (정말 간단한) 작업을하고 싶습니다.

  1. Git에서 프로젝트 생성 및 랩탑의 폴더에 매핑
  2. 파일 및 폴더 체크 아웃 / 체크인
  3. 갈등 해결

그것이 내가 지금해야 할 전부입니다. 그러나 GUI는 사용자 친화적이지 않은 것 같습니다. GUI에 Connect To...이와 비슷한 것이있을 것으로 예상 한 다음 프로젝트 목록이 표시 될 것으로 예상하고 하나를 선택하면 TFS 프로젝트를 탐색하는 것처럼 해당 프로젝트의 파일 및 폴더 목록이 표시됩니다 Visual Studio에서. 그런 다음 파일을 마우스 오른쪽 버튼으로 클릭하고 check-in...또는 또는 check-out그런 것을 선택 하고 싶습니다.

많이 기대합니까? TFS처럼 Git을 쉽게 사용하려면 어떻게해야합니까? 내가 여기서 무엇을 놓치고 있습니까?


8
1 년 전에 SVN에서 git으로 전환했으며 매우 기쁩니다. 엄격한 명령 줄 증오를 제외하고는 SVN을 권장하지 않습니다. git을 배우면 좋아할 것입니다.
maaartinus

14
왜 윈도우 사람들이 그래픽 인터페이스에 집착 하는가?
tdammers

8
@tdammers Windows의 명령 줄이 지옥처럼 빠지기 때문에? 알아요. PowerShell이 ​​있지만 사용합니까?
maaartinus

3
@Saeed, 처음에는 git에서 파일을 체크인 및 체크 아웃하는 것과 같은 것이있을 것으로 기대합니다. 몇 년 동안 사용 가능한 VCS는 없었습니다.
Daniel Roseman

1
권장 사항 : ericsink.com/entries/vcbe_print_edition_free.html 버전 관리의 기본 사항과 중앙 집중식과 분산 형의 차이점 (중앙 서버를 계속 사용할 수 있음)의 차이점에 대해 설명합니다.
Inca

답변:


19

git의 장점은 VCS가 무엇을해야하는지에 대한 많은 오래된 가정을 던지기 때문입니다. git의 단점은 이전 경험을 활용할 수없고 익숙한 방식으로 작업을 수행 할 수 없다는 데 있습니다.

다른 것에서 git으로 전환하려면 tabula-rasa를 시작하십시오 (실제로는 실제로는 불가능합니다). 그것이 수행하고 무엇을 기준으로 평가하기는하지에 얼마나 잘하는지 어떻게 당신이 그 일을하는 데 사용하는 방법과 비교를한다. 너무 많이 기대하는 것이 아니라 기대가 git이 제공하는 것과 직교한다는 것입니다. GUI 작업과 결혼했다면 실망 할 것입니다. 힘내는 GUI 도구를 사용할 수 있지만 많이 추가하지는 않습니다. GUI가 추가 할 수있는 것이 많지 않기 때문에 그것들을 제공하는 데 실패하지 않습니다. GitK는 일상적인 작업이 아니라 지점 구조를 시각화하고 기록을 검사 또는 검색하는 데 도움이됩니다.

다음은 "직교"의 의미에 대한 구피 적 비유입니다. 신문으로 할 수있는 것 중 하나는 물고기를 감싸거나 새장을 지어주는 것입니다. 그러나 이것들은 신문의 기능에 필수적이지 않으며, 그것들은 그 형태 의 우발적 인 특징입니다 . git이 "파일 체크인"또는 "프로젝트 선택"을 기대하거나 "연결 ... "는 물고기를 감싸거나 새장을 신문의 웹 사이트에 줄 수있을 것으로 기대하는 것과 같습니다 .


죄송합니다. 편집 내용을 설명하는 것을 잊었습니다. 커피를 더 마시고 비유를 머릿속에 띄운 후 마지막 단락을 추가했습니다.
kylben

3
결국 은유를 좋아했습니다. +1
Yam Marcovic

7

수은을 고려 했습니까? git과 마찬가지로 DCVS이므로 DCVS로 할 수있는 모든 깔끔한 작업을 수행 할 수 있습니다. git과 마찬가지로 꽤 좋은 클라우드 기반 서비스 제공 업체 (bitbucket)가 있습니다. 그러나 git과 달리 Windows 이야기는 꽤 괜찮습니다. 당신은 2 급 시민이 아닙니다. 훌륭한 툴링 옵션 (TortiseHG)과 꽤 괜찮은 Visual Studio 통합 (VisualHG)이 있습니다.

비주얼 스튜디오에서는 TFS와 같은 것이 없습니다. 세상은 그렇게 연결되어 있지 않습니다.


1
나는 몇 년 전에 VSS에서 Mercurial로 옮겼으며 이것이 진정한 주현절이라는 데 동의합니다. 갑자기 실용적이지 않다고 생각한 일을 할 수있었습니다. 그런 다음에 svn너무 쉽게 진행할 수있는 많은 것들 로 이동하여 놓쳤습니다 hg. 이제 저는 git감정이 혼합 되어 움직 입니다. 나는 내가 놓친 많은 시설들을 되 찾는 것을 좋아 svn하지만 hg, 불필요한 복잡성에 비해 단순함을 여전히 그리워한다 git. 심지어 방금 설치 TortoiseGit을 창에 단순히으로 필요하지 않습니다 남이하도록 요구 TortoiseHg .
Mark Booth

@ Mark Booth : git이 사용자에게 친숙하지 않다는 데 동의하지만 불필요한 복잡성은 무엇입니까? 설치 문제는 중요하지 않으며 TortoiseGit (다른 프로그램) 또는 Windows 때문일 수 있습니다.
maaartinus

이것은 채팅에서 더 나을 것이지만, 인덱스 / 캐시 / 스테이징 영역에 대해서는 아무것도 필요하지 않습니다 .IMHO는 기본적으로 요청이있는 경우 부분 커밋 옵션으로 모든 것을 커밋해야합니다 (더 나은 변경 사항은 그대로 유지하는 것이 좋습니다) 즉시 원치 않으면 유닛 테스트를 다시 실행하고 커밋 한 다음 해제하십시오. 또한 원하는 경우 새 브랜치를 명시 적으로 만들어야하는 것이 싫습니다. hg를 사용하면 비 헤드에 커밋 할 때마다 명명되지 않은 분기가 자동으로 생성됩니다. 자식에서 분기하지 않고 머리에서 멀어지면 머리를 잃어 버릴 수 있습니다.
Mark Booth

6

1 년 전에 SVN에서 git으로 전환했으며 매우 기쁩니다. 그러나 GUI에 의존하지 않으며 명령 줄을 엄격히 거부하는 경우 문제가 될 수 있습니다.

git익숙한 방식으로 작업 할 것으로 예상 되지만 그렇지 않습니다. 어렵지는 않지만 계속 진행하기 전에 원칙을 살펴보십시오.

Git에서 프로젝트 생성 및 랩탑의 폴더에 매핑

Git은 분산되어 있습니다. 즉, 항상 로컬 리포지토리를 사용하여 작업 할 수 있습니다.이 저장소는 0을 포함하여 여러 원격 장치에 매핑 될 수 있습니다. 다른 프로젝트를 재생할 때 두 가지 리모컨을 사용하고 있습니다 : git 또는 SVN 저장소와 내 서버.

나는 항상 빈 디렉토리를 만든 다음 git init또는 하나 또는로 시작 git clone SOME-REMOTE-REPOSITORY합니다. 이 링크 가 도움 될 수 있습니다.

파일 및 폴더 체크 아웃 / 체크인

사용중인 GUI를 작성하지 못했습니다. 모두 TortoiseGitgit-gui확실히 그것을 할 수 있습니다.

갈등 해결

이를 위해 git-gui또는 내가 좋아하는 텍스트 편집기를 사용하고 있습니다.

GUI에 Connect To ... 또는 이와 유사한 것이있을 것으로 기대합니다.

0 대 N 리모컨이있을 때 무엇에 연결합니까? Git은 원격 서버에 연결되어 있지 않으며 원격 저장소로 작업하는 몇 가지 명령에 대해서만 일시적으로 연결을 만듭니다. 대부분의 작업은 로컬에서 수행됩니다.

그런 다음 프로젝트 목록이 표시 될 것으로 예상합니다

나는 projects당신이 의미 한다고 가정 합니다 repositories.

그런 일이없는 것이 두렵습니다. 원격 서버의 Git은 하나의 저장소에서만 엄격하게 작동합니다. 모든 저장소를 나열하는 것은 서브 디렉토리를 포함하는 모든 디렉토리를 나열하는 것과 같습니다 .git. 에 이와 같은 것이 있다고 확신합니다 GitHub.

하나를 선택하면 탐색하는 것처럼 해당 프로젝트의 파일 및 폴더 목록이 표시됩니다.

다시, 나는 git로컬에서 작동하기 때문에 그런 것이 없다는 것을 두려워 합니다. 그리고 다시, 그것은 많이 사용되지 않을 것입니다. 저장소를 복제하여 컴퓨터에서 탐색하십시오. 대규모 리포지토리 복제에는 시간이 걸리지 만 모든 후속 작업은 훨씬 빠르며 커밋 또는 분기를 볼 수 있습니다.

그런 다음 파일을 마우스 오른쪽 버튼으로 클릭하고 체크인 ... 또는 체크 아웃 등을 선택하고 싶습니다.

다시, git로컬 에서 작동합니다. 따라서 원격 저장소에 체크인하거나 체크 아웃하는 것은 의미가 없습니다. 이런 방식으로 작업하는 것은 빠른 LAN에서도 시간 낭비입니다. 저장소를 컴퓨터로 가져 와서 작업 git push하고 원격으로 변경하십시오. 변경 사항을 게시하고 백업하는 것과 같은 생각을하십시오. 당신은 매우 자주 로컬로 커밋 해야합니다 .

작업을 시작하기 전에 git fetch또는 git pull다른 사람이 작업 한 경우에 대비하여 리모컨을 변경 하기 전에 .

많이 기대합니까?

예, 아니오 당신은 그것이 제공하는 것과 다른 것을 기대합니다. 훨씬 더 나은 것을 얻을 수 있고, git강력하고, 유연하며, 안전하고, 지옥처럼 빠르며, 필요한 모든 것을 할 수 있지만, 중앙 집중식 VCS가하는 것과 정확히 모방 할 수는 없습니다.


5

비주얼 소스 안전에서 tfs, svn에서 git까지의 여정을 만들었습니다.

vss에서 tfs로가는 것은 즐거운 경험이었습니다. tfs에서 svn으로가는 것은 즐거운 경험이었습니다. svn에서 git으로가는 것은 일종의 내부 전투였습니다.

나는 종종 자신이 상당히 보수적이라는 것을 알고 작동하는 것에 매달 리려고 노력합니다. 멋진 gui는 명령 줄보다 선호되며 내가 함께 일하는 멋진 아이들과 놀 수있는 gui를 검색하는 것을 발견했습니다. 그들은 모두 명령 줄과 함께 git을 독점적으로 사용했습니다.

내가 유레카 순간은은 총알 GUI에 대한 검색을 포기하고 git bash에게 시도를 시작하기 시작했습니다 (아직 배우고 있습니다).

일부 GUI가 설치되어 있으며 명령 줄에서 git을 보완합니다. Git 확장, Visual Studio 및 거북이 git 용 Git 소스 제어 공급자. 그러나 나는 git bash에 익숙해 졌다고 말한다. 이 명령은 조금 까다로울 수 있지만 일단 배우면 GUI보다 훨씬 빠릅니다.

자식으로 분기하는 것은 다른 것에 비해 굉장합니다. 분기를 만들고 분기간에 전환하면 거의 즉시 가능합니다. svn은 기본적으로 작업 복사본을 복사하기 때문에 (적어도 내가 한 것처럼) svn으로 방해하지 않는 작업을 수행 할 수 있습니다.

나는 힘내가 svn보다 가파른 학습 곡선을 가지고 있음을 발견했다. 그러나 일단 git으로 "얻으면"돌아가고 싶지 않습니다.

끝까지 힘내라.


5

파일을 저장하고 전능 한 소유자 인 서버 를 사용하는 데 익숙 합니다. 파일을 편집하려면 서버의 권한을 요청해야합니다.

힘내는 그렇지 않습니다. 이 방법으로 자식을 생각하십시오 : 로컬 저장소가 있습니다. Git을 사용하면 변경, 리버스 커밋, 쉽고 빠른 분기 등을 커밋 할 수 있습니다. 소스 제어 기록을 백업하려면 변경 사항을 GitHub.com과 같이 서버에 "있는 그대로"발생하는 다른 리포지토리로 푸시 합니다 .

워크 플로우 :

  1. 복제 (다운로드) / 저장소 생성
  2. 변경하십시오. 다른 사람들을 신경 쓰지 않고 개발을 계속하십시오.
  3. 다른 저장소로 푸시하십시오 (GitHub와 같은 서버 일 수 있음).
  4. 리포지토리로 푸시하면 해당 리포지토리의 소유자에게 보류중인 푸시 알림이 전송되고 커밋을 수락할지, 거부할지 또는 하위 집합 만 취할지 결정해야합니다.
  5. 사이클이 계속됩니다.

그게 다야.


1

git gui의 의미는 무엇입니까? 내가 올바르게 기억한다면 비주얼 스튜디오 통합을위한 플러그인을 포함하여 그들 중 일부가 있습니다. 하나의 GUI가 작동하지 않는 경우 GUI를 찾을 때까지 더 시도하십시오. 나는 개인적으로 다른 작업에 다른 GUI를 사용하고 다른 작업에는 CLI를 사용합니다.

그러나 git은 고정 시스템보다 버전 제어 프레임 워크입니다. 당신은 여전히 ​​그것을 최대한 활용하기 위해 몇 가지 기본 사항을 배워야 할 것입니다.


-2

많이 기대합니까?

TFS처럼 Git을 쉽게 사용하려면 어떻게해야합니까?

아무것도. Git은 CLI 중심이며 프론트 엔드가 좋지 않습니다 (TortoiseGit에 대해 알고 있지만 다른 Tortoise와 비교할 때 대답 하지 않습니다 ). SmartGit을 사용 하려고 할 수 있습니다 (Java에주의)


1
-1 : 파일 체크인 / 체크 아웃 및 충돌 해결은 소스 제어에서 '많이 기대하지 않습니다'.
Steven Evers

2
+1 원격 서버에서 직접 확인하는 것은 의미가 없습니다. LAN을 통해서도 느려집니다. 이러한 일을하는 것은 VCS가 아니라 FTP를위한 것입니다.
maaartinus

1
"체크인 / 체크 아웃"파일은 VCS의 기본 조작이 아닙니다. 대부분의 VCS에 공통적 인 구현 기능이며 미묘하지만 불행한 부작용이 있습니다.
kylben

2
@kylben : 체크인 / 아웃은 버전 관리를 보는 한 가지 방법입니다. 편집 및 병합은 다른 방법입니다. 일부 VCS는 이전 방식을 사용하므로 독점 잠금 및 개별 파일을 체크 아웃 할 수 있습니다. 다른 사람들은 후자를 가져 와서 전체 저장소를 다운로드하고 로컬로 변경 한 다음 다시 원격으로 푸시합니다. VCS는 충돌하는 변경 사항을 관리하여 의심이가는 경우 입력을 요청합니다. 두 가지 방법 모두 더 좋지는 않지만 일반적으로 VCS를 만들어지지 않은 VCS로 구부릴 수는 없습니다.
tdammers

1
'체크 인 / 아웃'을 통해 실제로 잠금 기반 VCS의 구현 방식에 대해 이야기하고 있었으며 편집을 위해 소스 파일을 다운로드하는 방법 (실제로 모든 VCS가 수행 할 수있는 작업)은 아닙니다. 많은 VCS가 파일을 '체크 아웃'으로 다운로드하는 단순한 프로세스를 언급한다는 사실은 약간의 잘못된 IMO입니다. 아무것도 점검하지 않으며 저장소는 파일을 가진 사람을 기억하지 못합니다.
tdammers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.