[간단정리] Git, SVN 특징 및 차이점

2022. 6. 12. 22:47·개발메모/간단정리

개요

형상관리 툴 Git, SVN 각각 특징 및 차이점 알아보기

내용


형상관리(Version Control Revision Control) 툴

- 소프트웨어 버전 관리 툴이라고도 한다.
- 형상관리는 소스의 변화를 끊임없이 관리하는 것을 말한다.
- 소스를 버전 별로 관리할 수 있어서 개발할 때 실수로 소스를 삭제하거나, 수정하기 이전으로 돌아가야되는 경우 유용하게 사용되는 툴.
- 팀 프로젝트에서도 누가 무엇을 어떻게 수정했는지도 알 수 있기 때문에 코드를 병합하거나 수정된 소스를 추적하는 데에도 쓰인다.

 

형상관리툴 종류

- Client/Server 타입: Subversion(SVN), CVS, Perforce, ClearCase, TFS

- 분산저장소 타입 : Git, Mercurial, Bitkeeper, SVK, Darcs

- Folder 공유 타입 : RCS, SCCS


Subversion(SVN)

- 2000년에 CVS를 대체하기 위해 만들어졌으며 현재까지 두루 사용되는 형상관리 툴
- trunk: 프로젝트에서 가장 중심이 되는 디렉토리
- branches: trunk에서 뻗어져 나온 나뭇가지를 뜻함. 프로젝트 내의 작은 프로젝트라고 생각하면 됨
- tags: 버전 별로 소스코드를 따로 관리하는 공간(버전 별로 태그를 붙여서 tag 디렉토리 안에 보관한다고 생각하면 됨)

 

특징

- SVN은 보통 대부분의 기능을 완성해놓고 소스를 중앙 저장소에 commit

- commit의 이미 자체가 중앙 저장소에 해당 기능을 공개한다는 의미.

- (GIT 과 가장 큰 차이점) 개발자가 자신만의 version history를 가질 수 없다. (그렇기 때문에 local History를 이용하긴 하지만, 일시적이다. 내가 몇일전 까지에 한하여 작업했던 내역을 확인 가능하지만 버전 관리가 되진 않는다.)

- commit한 내용에 실수가 있을 시에 다른 개발자에게 바로 영향을 미치게 되는 단점도 있다.


 

Git

- 매우 빠른 속도와 분산형 저장소. SVN보다 많은 기능을 지원하는 대신 당연히 익숙해지기에 더 많은 시간이 필요함.
- SVN을 사용하다 GIT을 사용하게 되면 무척 헷갈리고 개념 이해가 잘 되지 않았었다.

 

특징

- (SVN 과 가장 큰 차이점) 반면, git은 개발자가 자신만의 commit history를 가질 수 있고, 개발자와 서버의 저장소는 독립적으로 관리가 가능.

- commit한 내용에 실수가 있더라도 이 바로 서버에 영향을 미치지 않는다

- 개발자는 마음대로 commit(push)하다가 자신이 원하는 순간에 서버에 변경 내역(commit history)을 보낼 수 있으며, 서버의 통합 관리자는 관리자가 원하는 순간에 각 개발자의 commit history를 가져올 수 있음.


SVN과 Git의 차이점

- Git이 SVN과 다른 점은 분산형 관리 시스템이라는 것이다.
- SVN : 중앙 서버에 소스코드와 히스토리를 저장
- Git : 소스코드를 여러 개발 PC와 저장소에 분산해서 저장
- 그렇기 때문에 중앙 서버에 장애가 발생해도 로컬 저장소에 커밋을 할 수 있으며, 로컬 저장소들을 이용하여 중앙 저장소의 복원도 가능하다.
- 사본을 로컬에서 관리하기 때문에 GIT이 SVN에 비해 훨씬 빠르다. (SVN은 변경 로그 하나 보는 것도 인터넷을 경유해야 한다.)


내용출처: https://goddaehee.tistory.com/158

'개발메모 > 간단정리' 카테고리의 다른 글

[간단정리] Git 이란  (0) 2022.06.16
[간단정리] 프로세스, 스레드 특징 및 차이점  (0) 2022.06.16
[간단정리]프레임워크, 라이브러리 특징 및 차이점  (0) 2022.06.08
[간단정리] String, StringBuilder, StringBuffer 특징 및 차이  (0) 2022.06.06
[간단정리] List, Set, Map 특징 및 차이점(+ 구현체 )  (1) 2022.05.23
'개발메모/간단정리' 카테고리의 다른 글
  • [간단정리] Git 이란
  • [간단정리] 프로세스, 스레드 특징 및 차이점
  • [간단정리]프레임워크, 라이브러리 특징 및 차이점
  • [간단정리] String, StringBuilder, StringBuffer 특징 및 차이
99CORN
99CORN
1990.09.17
  • 99CORN
    넌 잘하고 있어
    99CORN
  • 전체
    오늘
    어제
    • -
      • IT
        • 잔기술
        • 네트워크
        • 면접 예상 질문
      • JAVA
        • 알고리즘
        • 기타
      • PHP
        • 기초
      • C#
        • 기초
      • 개발메모
        • 간단정리
        • WEB
        • 면접준비
        • 기타
      • 블랙홀
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • forl
  • 공지사항

  • 인기 글

  • 태그

    선택정렬
    graphQL
    JDK Dynamic Proxy
    docker
    c#
    stack
    알고리즘
    Java
    OpenFeign
    자바
    JavaScript
    https status code
    web
    http 상태
    php
    console.table()
    SERVER 환경변수
    웹개발
    격리수준
    Algorithm
    sort
    HTTP
    캐시스탬피드
    문자열 대표 클래스
    Queue
    JsonVue
    php 배열관련 함수
    기본문법 정리
    vParam
    springboot + graphql
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
99CORN
[간단정리] Git, SVN 특징 및 차이점
상단으로

티스토리툴바