Git & GitHub & SVN

yunuyununu·2024년 10월 27일
0

개발 상식

목록 보기
3/17
post-thumbnail

버전관리란?

원하는 시점(버전)으로 이동할 수 있게 해 주는 것이 버전관리이며, 이를 도와주는 툴이 버전 관리 시스템이다. 개발자 간의 협업을 위해 전체 개발 소스를 공유하면서 개발 파트를 나눌 수 있고 같은 모듈을 개발하더라도 소스를 공유하며 개발 할 수 있기 때문에 협업 프로젝트에서는 버전 관리가 필수!



📌Git

  • 오픈 소스 버전 관리 시스템(VCS: Version Control System)
  • 로컬에서 버전 관리
  • 소프트웨어 개발 및 소스 코드 관리에 사용

git은 본인의 코드와 그 수정내역을 기록하고 관리하도록 돕는 버전 관리 프로그램이며, 로컬에서 프로젝트의 기록을 스스로 관리할 수 있도록 해준다. git을 통해 브랜치를 생성하고 이전 브랜치로 복구, 삭제, 병합이 가능하다. 하지만 로컬 저장소를 사용하기 때문에 다른 개발자와 실시간으로 작업을 공유할 수는 없다.


📌GitHub

  • Git Repository를 위한 웹 기반 호스팅 서비스
  • 클라우드 서버를 사용해 로컬에서 버전 관리한 소스코드를 업로드하여 공유 가능
  • 분산 버전 제어, 액세스 제어, 소스 코드 관리, 버그 추적, 기능 요청 및 작업 관리를 제공

github는 git 저장소를 관리하는 클라우드 기반 호스팅 서비스이다. git 저장소 호스팅 서비스는 클라우드 기반으로 다른 사람과 소스코드 공유가 가능하며 git의 기본적인 기능을 확장하여 제공한다. 또한 클라우드 서버에 소스를 올리기 때문에 한 프로젝트에 여러 명의 사람이 참여하여 버전 제어 및 공동 작업이 가능하다.


❗❕ 한 줄로 정리하자면 Git(깃)은 버전 관리 시스템이고, GitHub(깃허브)는 Git으로 관리하는 프로젝트를 올려둘 수 있는 사이트 이다.


📌SVN

  • SubVersion의 약어로 중앙집중관리식 형상관리/소스 관리 툴
    각각의 개발자들이 본인의 코드 변경 사항을 하나의 중앙 저장소(Center Repository)에 커밋(Commit)하는 방식으로 운영한다. 즉, 로컬PC에서 커밋 시 중앙 저장소에 바로 반영되고 중앙 저장소에 있는 내용들을 다른 로컬PC에 업데이트 시킬 수 있습니다.

✔ SVN 장점

  • 원자적인 커밋을 지원하므로 다른 사용자의 커밋과 얽히지 않는다. 롤백가능
  • 파일과 디렉토리의 삭제,이동, 이름변경, 복사 같은 기능들을 지원
  • 소스 파일 이외에 이진 파일(텍스트 파일이 아닌 컴퓨터 파일)도 효율적으로 저장 가능
  • 디렉터리도 버전 관리 가능
  • 저장소의 크기에 상관없이 일정한 시간 안에 가지치기나 태그 가능
  • 처리 속도 상대적으로 빠름

✔ SVN 단점

  • 소스코드는 merge가 가능하지만 이진파일은 어느 한쪽을 버릴 수 밖에 없다.
  • 개별 개발자만의 개발 이력을 가질 수 없다.
  • 잦은 커밋이 발생하면 리비전 번호가 크게 증가 할 수 있다.
  • 충돌 일어날 확률 높음.

SVN과 Git의 차이점

SVNGit
사용법간단함다소 복잡
기능간편한 기능 포함다양한 기능 포함
프로세스중앙 집중식분산 관리식
소스 충돌 위험충돌 가능성 매우 높음권한 설정->충돌 위험 감소
저장소 백업 여부용이하지 못함매우 용이함
다수 작업 관리한계점 존재분산작업으로 수행 가능
작업 내용 복구불편함Revision으로 복구 편리
Branch 생성불편함Local에서 Branch 및 Tag 생성이 편리함

출처: https://cocoon1787.tistory.com/723

profile
코딩이의 끄적끄적

0개의 댓글