Git

이동현·2023년 5월 1일
0

코드 캠프 블로그

목록 보기
46/50

1. Git이란?

컴퓨터 파일의 변경사항을 추적하고 여러명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 스냅샷 스티림 기반의 분산 버전 관리 시스템이다.

깃은 2005년에 리누스 토르발스에 의해 개발되었고 주로 여러명의 개발자가 하나의 소프트웨어 개발 프로젝트에 참여할 때, 소스 코드를 관리해기에 개발자에게 필수불가결한 시스템이 되었다.

2. Git의 장점

  • 앞서 말했다시피 소스코드를 주고 받을 필요없이 여러 명이서 동시에 작업하는 병렬개발이 가능하다.

  • 브랜치를 통해 개발후, merge를 통해 개발을 진행할 수 있다.

  • 인터넷이 연결되지 않은 곳에서도 개발이 가능하며, 분산 버전관리이기에 중앙 저장소가 삭제 되어도 원상복구가 가능하다.

  • 소스코드를 효과적으로 관리해주는 독보적인 무료, 공개소프트웨어이다.

  • SVN vs Git

GITSVN
분산형관리 시스템중앙관리 시스템
여러 개발 PC와 저장소에 분산해 저장중앙서버에 저장
사본을 로컬에서 관리하기에 속도가빠름속도가 느림
로컬저장소에 저장후 업로드중앙서버 업로드(직관적)
Branch와 Merge를 통해 충돌가능성 낮음동시 업로드시 충돌가능성 높음
히스토리 관리 기능이 잘 제공되어, 히스토리 관리가 용이x

3. Git과 Git Hub의 관계

  • git은 본인의 코드와 그 수정내역을 기록하고 관리할도록 돕는 버전관리 프로그램이며, 로컨 저장소를 사용하기 떄문에 다른 개발자와 실시간으로 작업을 공유할 수 없다.

  • github는 git 저장소를 관리하는 클라우드 기반 호스팅 서비스로 다른 사람과 소스코드 공유가 가능하며, git의 기본적인 기능을 확장하여 제공하고 클라우드 서버에 소스코드를 올려 여러사람과의 공동작업이 가능하다.

쉽게 말해
Git은 버전관리 프로그램
Github는 버전관리, 소스코드공유, 분산 버전 제어 등등이 가능한 원격 저장소

4. Git 기본용어

  • Repository: 저장소. 저장소는 히스토리, 태그, 소스의 가지치기 혹은 branch에 따라 버전을 저장. 작업자가 변경한 모든 히스토리를 확인 가능.
  • Working Tree : 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점.
  • Staging Area : 저장소에 커밋하기 전에 커밋을 준비하는 위치.
  • Commit : 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업.
  • Head : 현재 작업중인 Branch를 가리킨다.
  • Branch : 가지 또는 분기점. 작업을 할때에 현재 상태를 복사하여 Branch에서 작업을 한 후에 완전하다 싶을때 Merge를 하여 작업을 한다.
  • Merge : 다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업을 의미한다.

5. Git 기본 명령어

  • git help : 도움말 기능(가장 많이 사용하는 21개의 깃 명령어 출력). 사용법이 궁금한 명령어에 대해 'git help [궁금한 명령어]'를 타이핑시, 해당 깃 명령어의 설정과 사용에 대한 도움말 출력.
  • git init : 깃 저장소를 초기화. 저장소나 디렉토리 안에서 이 명령을 실행하기 전까지는 그냥 일반 폴더이다. 이 명령어를 입력한 후에야 추가적인 깃 명령어 입력 가능.
  • git status : 저장소 상태 체크. 어떤 파일이 저장소 안에 있는지, 커밋이 필요한 변경사항이 있는지, 현재 저장소의 어떤 브랜치에서 작업하고 있는지 등의 상태정보 출력.
  • git branch : 새로운 브랜치 생성. 여러 협업자와 작업할 시, 이 명령어로 새로운 브랜치를 만들고, 자신만의 변경사항과 파일 추가 등의 커밋 타임라인을 생성, 완성 후 협업자의 branch 혹은 main과 merge.
  • git add : 'staging 영역'에 변경내용 추가. 다음 commit명령 전까지 변경분을 staging 영역에 보관하여 변동내역을 저장.

    cf) git commit -m [커밋 메시지] : staging area에 있는 내용은 "커밋 메시지"를 반영한 수정본 파일의 묶음임.

  • git log : 커밋 내역 확인
  • git push : 로컬 컴퓨터에서 서버로 변경사항을 “push”
  • git pull : 서버 저장소로부터 최신 버전을 "pull" (서버 저장소의 데이터를 가져와, 현재 브랜치와 merge)

      cf) 작업 도중 기존 작업 내용은 유지하면서, 최신 코드로 업테이트 할 때 사용.
  • git clone : 서버 저장소의 데이터를 로컬 컴퓨터로 복사. (서버 저장소의 데이터를 그대로 가져옴. 작업중이던 내역 있을시 덮어쓰기 됨)

      cf) 프로젝트에 처음 투입 될 때 사용
  • git checkout : 작업하기 원하는 브랜치로 이동.
    cf1) git checkout Yana : Yana 브렌치로 이동.

      cf2) git checkout  -b 야나 : '야나' 라는 브랜지를 생성 후 야나 브렌치로 이동(생성과 이동 동시에)
  • git merge : 개별 branch에서 마친 작업을 master branch로 병합.

0개의 댓글