티스토리 뷰

git

Git과 GitHub에 대해서

ssffwert 2021. 5. 11. 00:56

버전 관리 시스템(Version Control System)

파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템으로 거의 모든 컴퓨터 파일의 버전을 관리할 수 있다.
CVS(Concurrent Version System), SVN(Subversion), Git 등이 있다.

중앙집중식 VS 분산

  1. 중앙집중식 버전 관리 시스템(Centrailzed Version Control System)
    서버에 저장소를 집중 배치하여 하나의 소프트웨어를 개발할 때 하나의 저장소만 존재한다.
    누가 무엇을 하고 있는지 알 수 있다.(예를들어, 파일에 작업자와 상태 표시)
    데이터가 중앙 서버에 집중되므로 관리하기가 매우 단순해지지만, 서버에 접속할 수 없거나 서버가 고장나면 최신 소스 코드를 받아올 수 없다.
    CVS, Subversion과 같은 시스템이 여기에 속한다.
    SVN은 파일의 변화 발생 시 각 개발자가 작업한 파일의 차이점을 저장한다.
    브랜치나 태그 기능은 거의 사용하지 않거나, 작업/관리 파일의 규모가 작아서 버전 관리에 문제가 없는 경우, SVN서버 문제가 없을 때 사용한다.
  2. 분산 버전 관리 시스템(Distributed Version Control System)
    클라이언트가 파일들의 마지막 스냅샷을 가져오는 대신, 저장소를 통째로 복제한다.(히스토리와 더불어 전체 백업을 한다.)
    서버에 문제가 생겨도 어느 클라이언트든 복제된 저장소를 다시 서버로 복사하면 서버가 복구된다.
    집중형과 달리 여러 개의 저장소(원격 + 다수의 로컬)가 존재하며, Git과 같은 시스템이 여기에 속한다.
    굳이 로컬에 따로 저장소를 만드는 이유는 바로 속도 때문이다. 작업할 때 인터넷을 경유할 필요가 없어지니까 커밋 속도는 최소 4배 이상 빨라진다.
    그리고 더 중요한 건 로컬 저장소에서 작업을 하기 때문에 부담 없이 테스트를 할 수 있고, 원격 저장소와 연결이 끊겨도 버전 관리가 가능하다.

Git

로컬에서 관리되는 분산 버전관리 시스템이다.
대부분의 작업은 로컬 파일과 리소스만 있으면 작동한다. 예를들어 프로젝트의 히스토리를 검색하기 위해 서버로 이동하지 않고 로컬 데이터베이스에서 직접 읽는다.
대부분 리눅스 기반의 명령어 수행을 위한 콘솔프로그램인 Git Bash를 사용한다.

GitHub

클라우드 방식으로 관리되는 버전관리 시스템(git:GitHub = N:1)
다른사람들과 함께 작업을 해야 하는 경우 클라우드로 원격저장소를 만든다.
내 컴퓨터(로컬) 저장소에 작업을 하고(커밋. Commit) 다른 사람과 공유하기 위해서 원격 저장소에 보내면(Push) 된다.
Git 저장소를 인터넷상에서 제공하는 서비스로 소스코드 업로드 및 공유할 수 있는 공간으로 사용한다.
일단 Github에 있는 컨텐츠를 내려받고, Git으로 로컬 저장소에 작업한 내용을 저장한 뒤, 해당 내용을 GitHub에 업로드하는 형식으로 사용한다.
오픈소스는 일정 부분 무료로 저장 가능하다.

용어

1. staging area: 로컬에서 커밋을 하기 전에 거치는 전 단계.
2. snapshot: 깃은 각 순간(버전)을 스냅샷으로 저장한다. 이 스냅샷을 통해서 브랜치를 사용할 수 있다.
3. branch: 스냅샷을 통해서 브랜치를 쉽게 만들 수 있다. 브랜치를 전환할 때도 직접 디렉토리를 이동하지 않고 작업 파일들을 실시간으로 변경할 수도 있다.
4. commit: Git(로컬 저장소)에 파일을 추가하거나 변경 내용을 저장하는 작업
5. push: GitHub(또는 원격저장소)에 파일을 추가하거나 변경 내용을 저장하는 작업
6. pull: GitHub에서 파일을 다운로드하는 작업
7. fork: GitHub에 있는 특정 저장소를 자신의 계정으로 복제하는 작업

참고자료

  1. Git과 Github(깃허브)의 차이
  2. git과 github의 차이
  3. Git/GitHub 개념
  4. git--fast-version-control
  5. 개발할 때 깃(Git)을 써야 하는 이유

'git' 카테고리의 다른 글

git bash 활용해서 소스 올리기  (0) 2020.03.15
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday