GIT로 이동하기 전에 SVN을 이해해야합니까? [닫은]


31

나는 자신을 포함하여 이전에 아무도 소스 컨트롤을 사용한 적이없는 부서에서 일하고 있습니다.

나는 개념을 추진하려고합니다. SVN을 연구하는 동안 약간의 시간을 보냈습니다. 나는 몇 가지 기본 사항을 배웠다. 커맨드 라인과 Tortoise에서 생성 / 업데이트 / 체크 아웃 / 커밋 할 수 있습니다. 태그와 브랜치 방법을 배우기 시작했지만 여전히 브랜치와 트렁크 간의 충돌에 대해 많은 혼란을 겪고 있습니다. 아직 배우고 있지만 물리적 인 사람은 없습니다. 그것은 모두 책 / 자습서와 시행 착오에서 나온 것입니다.

내가 온라인에서 읽은 것에서 git알면 좋을 것 같지만 더 복잡합니다. 나는 자신을 압도하고 싶지 않습니다. git으로 이동하기 전에 svn을 계속 마스터해야합니까, 아니면 지금 git으로 점프하는 것이 더 현명합니까?

두 가지 접근 방식에 장단점이 있습니까?


참조 stackoverflow.com/questions/161541/svn-vs-git/2549128#2549128을 : 모두 같은,보다 일반적으로 CVCS와 DVCS가 (근본적으로 차이가있다 stackoverflow.com/questions/2704996/...stackoverflow.com/ questions / 2563836 /… )
VonC

1
gitref.org 는 Git 학습을위한 훌륭한 소스입니다.
Jeremy Heiler

4
아니오, 그것은 당신의 마음을 흐리게하고 당신은 "subversion re-education"이 필요합니다. 또한 git / mercurial이 더 나은 기술입니다. 동료를 Subversion에서 교육하면 나중에 최고의 도구로 전환하기가 더 어려워집니다.
Keyo

힘내라 Git 은 아주 쉽고, 잘 설계된 초보자 코스입니다
Ben Brocka

답변:


58

아니

힘내는 SVN과 크게 다르므로 도움이되지 않습니다. "update"및 "commit"명령을 찾고 왜 모든 것이 다른지 궁금 할 것입니다.

Bottom Up에서 Git으로 시작하여 거기서 시작하십시오 .


표준 중앙 집중식 업데이트 / 커밋 패턴 버전 관리 시스템을 Git과 대조하는 것은 버스를 대중 교통과 비교하는 것과 같습니다. 버스는 똑같은 경로를 사용하여 A 지점에서 B 지점으로 당신과 다른 모든 사람들을 데려 갈 것입니다. 대중 교통을 이용하면 원하는 경로를 사용하여 A 지점에서 B 지점으로 이동할 수 있습니다.

분산 자체에는 알아야 할 단점이 있습니다. 모든 사람을 같은 페이지에 유지하려면 더 많은 작업이 필요합니다. 그러나 유연성이 크게 향상되었습니다.


수정 해시 대 숫자

누군가는 SHA1 해시를 사용하는 Git을 언급했지만 Hg는 숫자를 사용합니다.

먼저 매일 커밋 / 풀에서 해시를 직접 처리 해야하는 경우는 거의 없습니다. diffs 또는 더 까다로운 rebasing 항목을 수행하는 경우 로그를 풀고 해시를 가져와야합니다.

Git을 사용하면 모든 사람이 동일한 해시를 갖습니다. 다른 리포지토리에는 다른 커밋 번호가 없으며 모든 사람이 같은 페이지에 있습니다. Hg를 사용하면이 정도는 줄어 듭니다. 실제로 커밋 해시를 가져 와서 코드 타임 라인을 비교하거나 통과하기 위해 처리 해야하는 경우 숫자 대신 해시가있을 때 다른 사람들과 동기화하는 것이 더 쉽습니다.


3
어쩌면 그것은 미국의 것이지만 "대중 교통"과 "대중 교통"과 같은 것이 아닌 것입니다 (예 : 버스, 기차 등)?
Dean Harding 2018 년

@Dean : 예, 동일합니다. 대중 교통보다 대중적인 느낌이 들기 때문에 대중 교통을 사용했습니다.
Josh K

나는 'MassTransit'(로 의견을 읽고 때까지 나 있었다 약간이 혼란 masstransit-project.com ) ... 또한 버스입니다
FinnNk

3
나는 큰 NO를 생각하고 있었고 나타났습니다. +1
ZJR

22

아니, 귀찮게하지 마십시오.

DVCS부터 시작하십시오. SVN이 인기가 있다는 사실이 표준이 아닙니다. Linus Torvalds는 뇌가 썩을 수 있다고 말합니다 .

Joel Spolsky의 Subversion Re-education 이라는이 훌륭한 기사 / 소개를 읽으십시오 .

이 다른 질문을 읽고 싶을 수도 있습니다. 저는 Subversion 괴짜입니다. 왜 Mercurial이나 Git 또는 다른 DVCS를 고려해야합니까?

DVCS 사이에서 선택

개인적으로 저는 수은과 자식을 모두 사용하며 둘 다 아는 것이 중요하다고 생각합니다. 이에 대한 권장 자료는 Git vs. Mercurial : Please Relax (git-addremove 예제 참조)입니다. 그 기사에서 인용 한 두 따옴표는 요약합니다.

자식에 관해서 :

Git의 디자인 철학은 Unix의 철학입니다. Subversion, CVS 또는 Mercurial과는 달리 git는 단일체 바이너리가 아니라 git-pull, git-merge, git-merge, git-apply, git-hash-object 및 git-merge-file과 같은 하위 수준의 "배관"명령에 대한 git-checkout 따라서 MacGyver와 마찬가지로 Git으로 필요한 모든 작업을 수행 할 수 있습니다. 여기에는 완전히 멋진 Wiki 엔진, 이슈 트래커, 파일 시스템, sysadmin 도구 등 퓨즈 수리가 부족한 모든 것이 포함됩니다.

수은 관련 :

시스템을 깨끗하게 유지하려는 개발자는 아마도 git이 git을 구성하는 144와 대조적으로 hg가 하나의 바이너리를 설치한다는 사실에 감사 할 것입니다. 단순성 hg는 특정 기능을 생략하여 제공합니다.

github에서 많은 프로젝트를 찾을 수 있으며 git은 더 강력하지만 새로운 사용자, 특히 Windows 사용자에게는 다소 위협이 될 수 있습니다. 비트 버킷 도 있습니다 (github은 수은과 동일합니다).

나의 추천 : 수은으로 시작하고 편안하게 느끼면 git을 선택하십시오. 도구에 관한 것이 아니라 함께 일하는 사람들에 관한 것입니다 .

내가 Subversion의 실제적이고 실제적인 사용을 고려하는 것은 다른 사람들과의 작업이 아니라 프로덕션 응용 프로그램에 대한 업데이터를 구현하는 것입니다. 이유는 다음과 같습니다.

  • 현재 svn은 대부분의 호스팅 제공 업체에 거의 설치되어 있습니다
  • 좋은 하위 프로젝트 지원이 있습니다 (git 및 hg로 해결 가능). svn up프로젝트와 그 의존성이 업데이트됩니다.

이 다른 스레드 에서 Thorbjørn 인용 :

DVCS는 Subversion에 있으며 Bittorrent는 ftp에 있습니다.

편집 : Git 전에 알아야 할 VCS가 있다면 Mercurial 일 수 있습니다 (더 친숙한 CLI 인터페이스이며 분산 개념을 도입하는 것이 좋습니다). 이 조언은 CLI가 어느 정도 유사하기 때문에 Subversion에서 온 사람들에게 특별히 적용됩니다. 분산 버전 제어는 중앙 집중식 버전 제어보다 배우기 쉬울 수 있습니다. 클라이언트와 서버 부분이 아닌 저장소 인스턴스에 대해서만 걱정하기 때문 입니다.


1
유용한 링크는 +1입니다. Subversion은 정신 모델에서 소스 제어에 대한 아이디어를 얻었을 때 필요에 따라 선택할 수있을만큼 충분히 쉽고 잘 문서화되어 있습니다.
Gary Rowe

2
전에 SVN을 사용하면 마음이 더러워 질 수 있습니다.


1
나는 더 나은 창을 지원하는 것 HG를 사용하는 주된 이유라고 말하고 싶지만
JK합니다.

1
창을위한 Git surport를 살펴 보았을 때 많은 Git 사용자 창을 사용하는 사람을 싫어 한다는 것을 알았으므로 hg가 우리에게 더 적합한 것을 결정했습니다.
Ian

4

사용하고자하는 것을 배워야합니다. Guri는 Mercurial이 인기를 얻은 것처럼 인기가 있습니다. Git / Mercurial은 모두 분산 소스 제어 시스템입니다.

팀에 새로운 개념을 도입 할 때 가장 중요한 것은 (그리고 버전 관리가 너무 많은 팀의 새로운 주제로 간주되는 것은 불행한 일입니다.) 목표와 평가 기준을 설명하는 데 도움이됩니다. 공식적인 내용 일 필요는 없지만 다음과 같은 질문을 해보십시오.

  • 우리 팀 의 버전 관리 목적은 무엇입니까? 예, 모든 가치가있는 모든 버전 제어 시스템을 사용하면 기록으로 돌아가 특정 파일에서 변경된 내용을 확인할 수 있습니다. 그러나 새 릴리스의 기준선으로 사용 하시겠습니까? (머리를 끄덕이고, 당신은 이것을 원합니다). 이것은 달성하고자하는 것에 대한 2-3 줄 비전 진술입니다.
  • 귀사의 팀은 나중에 업무를 신중하게 병합하기 위해 자체 지역 업무 환경을 갖추고 있습니까? 그렇다면 DVCS 경로가 가장 적합 할 수 있습니다.
  • 반대로, 팀이 하나의 공유 드라이브에서 작업하는 데 익숙하고 모든 것이 지속적으로 통합되어 있습니까? 그렇다면보다 전통적인 VCS가 가장 적합 할 수 있습니다.

대안을 평가할 때 모든 VCS가해야 할 중요한 일을 고려해야합니다.

  • 기준 코드 (태그, 레이블 등). 기본적으로 프로젝트 릴리스에 사용 된 정확한 소스 코드를 얻는 방법은 무엇입니까?
  • 중앙 서버에 대한 로컬 변경 사항을 가져옵니다. DVCS를 사용하든 표준 VCS를 사용하든 관계없이 코드의 권한있는 사본이 있어야합니다. 각 도구는이 프로세스를 다르게 처리합니다.
  • 중앙 서버에서 로컬 사본으로 변경 사항을 가져 오십시오.
  • 실험적인 변화를 다루는 방법. VCS를 사용하면 기본 프로젝트 소스 코드를 손상시키지 않으면 서 제안 된 변경 사항을보다 대담하게 처리 할 수 ​​있습니다. DVCS와 표준 VCS 시스템은 이와는 매우 다른 방식으로 접근합니다. 그 중 하나가 팀에 가장 적합합니다.
  • 서버를 어떻게 설정하고 구성합니까?
  • 인증이 필요하십니까? 그렇다면 실제로 변경할 수있는 사람 만 실제로 할 수 있도록하려면 어떻게해야합니까?

결국 표준 VCS 또는 DVCS 시스템이 팀에 가장 적합한 지 여부를 결정하기 위해 빠른 평가를 수행하십시오. 통증이 가장 적은 도구를 선택해야합니다. 그렇지 않으면 도구가 채택되지 않을 것입니다. 그런 다음 요구 사항에 가장 적합한 대안을 평가하십시오.

결국, 당신이 사용하려는 것을 배우십시오.


3

많은 사람들이 git이 svn보다 복잡하다고 생각합니다. 서브 버전 (또는 cvs 등)을 잠시 사용한 후에는 모드를 DVCS 모델로 정신적으로 전환하기가 어려울 수 있습니다. 이를 바탕으로 git과 같은 DVCS를 연구하면서 서브 버전과 같은 전통적인 VCS를 연구하는 것이 당신에게 좋지 않을 수 있습니다.

git이 내가 선호하는 VCS이지만 서브 버전을 배우는 것이 가장 좋습니다. 하나는 여전히 많은 서브 버전과 cvs 리포지토리가 있기 때문에 언젠가는 상호 작용해야 할 수도 있고 기존 VCS에 비해 DVCS의 정확한 장단점을 더 잘 이해할 수 있다는 것입니다.


절차 적 언어로 작업하지 않은 경우 체계와 같은 언어를 배우기가 더 쉽다는 증거를 보았습니다. 이것은 비슷하게 작동 할 수 있습니다.
David Thornley

따라서 git-svn clone저장소와 상호 작용하는 데 사용하십시오.
Keyo

3

svn을 배우고 git을 배우는 것은 비생산적입니다.

몇 가지 이유는 다음과 같습니다.

  • svn과 근본적으로 다른 Gits. Git은 혼란스럽고 svn은 클라이언트 / 서버입니다.
  • 같은 단어에 다른 의미가 붙습니다. 예를 들어 'git checkout ...'은 'svn checkout ...'과 다른 의미를 갖습니다.
  • 분기가 다릅니다. Git은 svn이 지원하지 않는 저렴한 현지 지점 인 '주제'지점이라는 개념을 가지고 있습니다.
  • Git은 작업 트리와 리포지토리 사이에 인덱스라는 추가 위치가 있습니다. Svn에는 색인이 없습니다. git을 사용하면 변경 사항이 작업 트리에서 색인으로 리포지토리로 이동합니다.

내 조언은 git을 배우는 것입니다.


2

GIT와 SVN에는 광범위하게 동일한 것이 있지만 그렇지 않은 것도 있습니다.

작성 / 업데이트 / 체크 아웃 / 커밋

대체로 동일하게 쉽게 집어 올릴 수 있습니다.

태그와 브랜치 태그를 지정하지만 브랜치와 트렁크 등의 충돌에 대해 여전히 혼란 스럽습니다.

둘 사이에 다릅니다.

지금 당장 바꾸어야한다고 말하지 말고 (나는 그것이 당신의 전화라고 생각합니다), 그것을 고려해야 할 것으로 지적하고 싶었습니다. Git을 사용 해보고 싶다면 SVN에서 Git과 다른 것을 배우기 위해 지금 전환하기로 결정할 수 있습니다.


또한 subversion bashers를 듣지 마십시오. -p Git은 현재 매우 "쿨"하고 svn은 매우 냉담하지만 둘 다 제자리에 있습니다. 둘 중 하나를 사용하는 것이 이것을 소개하는 데 너무 좋은 것을 사용하지 않는 것보다 훨씬 낫습니다. 저는 2 개의 소규모 회사에 VC를 도입했습니다. 어렵지만 그만한 가치가 있습니다.
James

+1 훌륭한 정보 감사합니다. 내가 뛰어 올랐다면 지금은 좋은 시간이 될 것입니다.
JD Isaacks

그리고 파괴의 장소는 어디에 있습니까?

2

와우; 12 답변과 모든 사람이 여전히 질문을 구걸하고 있습니다 ...

아니요, Subversion은 Git의 전제 조건이 아닙니다.

Subversion과 Git 사이에 명확한 매핑은 없습니다. 둘 다 배우려고한다면, 다른 행동에 대해 동일한 용어를 사용한다는 사실만으로도 어려움을 겪을 것입니다. (그리고 같은 행동에 대해 다른 용어)

  • svn commit와는 다른 것 git commit입니다.
  • svn과 git의 분기는 매우 다릅니다
  • svn 저장소는 git remote와 비슷하지만 실제로는 아닙니다.
  • 자식 저장소는 svn 작업 복사본과 비슷하지만 실제로는 아닙니다.

이들은 공통 언어로 나눈 두 가지 도구입니다.

귀하의 질문과 대부분의 다른 답변은 git이 일종의 svn ++라고 가정합니다. "더 나은 svn". 그렇지 않습니다. 이 둘은 자동차와 오토바이처럼 같은 공간에서 작동하는 다른 도구입니다.

하나를 골라 마스터하고 팀에서 사용하는 것이 좋습니다. 이전에 사용하지 않은 사람들에게는 학습 버전 관리가 어려울 것입니다. VCS는 인프라의 중요한 부분이 될 것이며,이를 신뢰하는 법을 배우려면 새로운 작업 습관을 갖추어야합니다. 시간이 좀 걸립니다.

어느 쪽이든, sysadmins가 마스터 저장소를 백업하도록하십시오. 소스 제어를 잃는 것은 치명적입니다.


1

아마도 아닙니다-서버 기반과 배포판 사이에는 충분한 차이가 있으므로 더 이상 혼란스럽게 할 것입니다.

처음부터 마치 원하는 DVCS를 사용하여 처음부터 시작하는 것이 좋습니다. 아마 훨씬 더 행복 할 것입니다.

Mercurial을 살펴보십시오 (압도 받고 싶지 않은 경우).


2
당신이 공의를 표명한다면, 적어도 설명의 예의를주십시오. 감사. 두 가지 가능성 : 1) 답을 고칠 수도 있고 2) 답을 삭제할 수도 있습니다. 그러나 이것이 왜 이것이 잘못되었다고 생각하는지 실제로 아는 경우에만
Murph

1

Git은 Subversion보다 약간 더 복잡합니다. Git에는 중앙 저장소로 커밋하는 것과 푸시하는 것이 다릅니다.

Subversion이 마음을 파괴하지 않으면 서 Git을 배울 가치가 있습니다.


1

Git을 이해하려면 Subversion을 이해해야한다고 생각하지 않습니다.

적어도 Subversion과 Git 및 Mercurial의 가장 큰 차이점은 작업하는 로컬 리포지토리가 있고 코드가 작동 할 때까지 체크 인 및 체크 아웃하고 중앙 저장소에서 체크 아웃하고 충돌을 수정하고 다시 체크인하고 서버로 푸시하십시오.


1

나는 유닉스 환경 (Linux, MacOS X)에서 자식을 정말로 좋아합니다. 창문에서는 약간 해키입니다. 방정식에 Windows가 있으면 Mercurial을 고려할 것입니다.

나는 당신의 역사 수업을 좋아하고 SCCS, RCS, CVS, Subversion을 시도한 다음 Git 또는 Mercurial과 같은 유용한 것을 사용합니다.

Git과 Mercurial은 동등하며 Git의 큰 보너스는 github 입니다. 그러나 버전 제어를 아웃소싱하지 않으려는 경우 github은 더 이상 방정식에 포함되지 않습니다.


1

버전 관리 시스템은 처음 배우는 데 가장 많은 시간이 걸린다는 점에서 프로그래밍 언어와 공통점이 있습니다. 그 후, 새로운 개념을 선택하는 것은 새로운 개념이 핵심 개념을 어떻게 표현 하는지를 배우는 문제 일뿐입니다.

지금 Git을 배우고 필요한 경우 나중에 Suvbersion을 배우는 데 시간을 투자 할 수 있습니다.


0

아니. Git을 다운로드하고 github 계정을 만들고 repos 등을 며칠 동안 엉망으로 만드는 것이 좋습니다. 5 개 또는 6 개의 bash 명령을 배우면 모든 필수 작업을 수행 할 수 있습니다. 나는 일반적으로 GUI의 "멍청한 증거"를 선호하지만 Git Bash는 쉽게 얻을 수 있습니다. 또한 Git Gui는 그 경로를 선호한다면 꽤 괜찮습니다. SVN을 배우면 얻을 수있는 이점을 실제로 보지 못합니다. 나는 새로운 오픈 소스 프로젝트를 위해 몇 가지 다른 버전 관리 시스템을 평가하던 시절을 거슬러 올라 갔다. SVN, Bazaar, Git 및 기타 몇 가지를 시험 해보고 각각의 기본 사항을 배웠습니다. YMMV,하지만 망할 놈이었다 지금까지 가장 쉬운. SVN을 배우는 데 아무런 문제가 없지만 Git을 배우는 데 실제로 도움이되지는 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.