#1. Git 준비하기

1. Git이란?

  • Git은 소스코드를 효율적으로 관리하기 위한 분산형 버전 관리 시스템이다.
  • 여러 사람과 여러 장소에서 파일들을 복사, 저장 및 백업 등을 할 수 있다. (버전관리)
  • CVS (Concurrent Versions System, 동시 버전 시스템) → SVN (SubVersion) → Git 순서로 발전 했다.
  • 개발시 처리 속도가 빠르다
  • 원격저장소에 에러가 생겨도 로컬에서 복구가 가능하고, 히스토리 관리가 용이하다.

 

2. Github이란?

  • Github는 웹상에서 제공하는 서비스로 프로젝트 할 때 작업 결과물을 취합하기 위한 웹하드 같은 것이다.
  • Github(웹호스팅 서비스)의 기능을 통해 push, pull 같은 명령어로 보다 쉬운 병합(merge)을 할 수 있다
  • 프로젝트를 위한 폴더를 저장소 (Repository) 라고 한다.
  • 원본은 Github에 저장되어 있고, 복사본을 다운받아(pull) 작업한다. 

 

3. SVN 과 Git 의 차이

  • SVN
    • 중앙집중관리식 (중앙 서버에 소스코드와 히스토리를 저장)
    • 직관적이지만, 동일 파일 수정으로 commit 시 충돌 가능성이 크다.
    • 한 사람이 commit 하면 모든 사람에게 공유 된다. (충돌 나는 이유)

 

  • Git
    • 분산관리식 (여러 저장소에 분산해서 저장)
    • 직관적이지는 않지만, 작성 시간 순서대로 시스템에서 형상 관리(변경이력 관리) 하기 때문에 파일의 충돌 가능성이 낮다.
    • 로컬 저장소의 내용을 원격 저장소에 push 하고 다른 사람들이 pull 해야 나의 작업 내용이 공유 된다.

 

4. Git 이해하기

A, B, C, D 이렇게 4명이 있다고 가정하자. A는 프로젝트를 생성하여 Git에 등록한다.

나머지 B, C, D는 Git에 등록된 프로젝트를 복제(clone) 한다.

B는 복제한 프로젝트에 자신의 코드를 추가하여 Git에 등록(push) 한다.

C, D는 B가 추가한 Git을 내려받는다. (pull)

이렇게 여러 사람이 소스코드를 주고 받을 필요 없이 같은 파일에 자신의 코드를 추가하여 등록(push) 하고 내려받을 수 있다. (pull)

 

#2. Git Client

1. 운영체제에 따라 Git Client 준비

 

xcode-select --install

 

2. Git 설정

다음 명령어들을 cmd 나 터미널에 입력해준다.

git config --global user.name "사용자 이름"
git config --global user.email "메일 주소"
git config --global core.precomposeunicode true
git config --global core.quotepath false

 

#3. Github 계정과 연동을 위한 인증서 등록 (SSH)

1. 터미널이나 cmd에 명령어를 입력한다

ssh-keygen

  • 만약 ssh가 설치되어 있다면, 위 명령어 실행시 저장할 경로 문구 뒤 Overwrite (y/n)? 라는 문장이 뜬다. y 눌러주면 된다
  • 다음에 밑줄 친 비밀번호 입력하라는 문구가 나오는데 아무것도 입력하지 않고 엔터 누르면 git과 연동시 비밀번호 입력 과정이 생략된다 (입력하면 연동할 때 마다 비밀번호를 묻는다 ..) 

 

2. 인증서 파일이 생성된 경로에 접근한다

  • 인증서 파일이 생성된 폴더는 숨김파일로 되어 있다.
  • 윈도우의 경우 숨김파일 보기 선택하면 보이고, 맥의 경우 command + shift + . 누르면 숨김파일이 보인다. (명령어로도 접근 가능)

  • id_rsa.pub 라는 파일을 텍스트 편집기로 열고 나오는 내용을 복사한다.

 

3. Github 계정에 인증서 등록하기

  • Github에 로그인 후 오른쪽 상단에서 설정페이지로 들어간다

  • 설정페이지에서 왼쪽에 SSH and GPG keys 카테고리로 들어간다

  • SSH and GPG keys 카테고리 들어가면 New SSH key 라는 초록색 버튼이 보이는데 누르면 위 페이지가 나온다
  • key 란에 id_rsa.pub 파일에서 복사한 내용을 붙여넣기 한다. (title은 마음대로)

  • 위와 같은 화면이 나오면 정상적으로 등록되었다.

 

#4. Git 용어 및 명령어

1. Git에 쓰이는 기본 용어

  • Repository : 저장소를 의미하며, 히스토리, 태그, branch에 따라 버전을 저장한다 (히스토리 관리 용이)
  • Branch : 작업 할 때 현재 상태를 복사하여 하나의 프로젝트를 여러 갈래로 나누어 관리할 수 있다.
  • Merge : 병합을 뜻하며, 다른 branch의 내용을 현재 branch로 가져와 합치는 작업을 뜻한다.
  • Staging Area : 저장소에 커밋하기 전에 커밋을 준비하는 위치
  • Commit : 변경된 작업 상태를 저장소에 저장하는 작업
  • Head : 현재 작업 중인 branch를 뜻한다.

 

2. Git에 쓰이는 주요 명령어

  • git help : Git에 쓰이는 명령어에 대한 정보가 나온다.
  • git log : 커밋된 내역을 확인하고 싶을 때 사용한다.
  • git status : 저장소의 상태를 확인한다. 
  • git clone : Github에 있는 저장소를 내 로컬 PC로 복사한다
git clone git@github.com:사용자아이디/프로젝트이름.git
  • git add : 내가 작업한 내용을 저장소에 업로드 하기위한 첫번째 명령어 (원격저장소에 바로 추가되진 않고 선택한다 정도(?))
// 현재 프로젝트 폴더의 모든 내용을 스테이지에 등록
git add --all
  • git commit : 스테이지에 등록된 변경사항을 커밋 → 원격 저장소 업로드 대기 상태 (commit) 로 만든다.
// -m 은 다음 부분을 메세지로 남긴다는 뜻이다
git commit -m "작업 내용에 대한 설명"

* add 와 commit은 내가 작업중인 로컬 PC에서 여러번 수행할 수 있다. (이 두개가 한 세트라고 볼 수 있다)

  • git push : 커밋 된 내역을 모아서 원격 저장소에 업로드 한다.
// origin은 내컴퓨터를 뜻하고, main은 Github를 뜻한다
git push origin main
  • git pull : 원격 저장소의 내용을 내려 받는다. (최초 1회는 git clone 명령어를 사용해서 다운 받고 이후 변경된 내용을 다운 받을 땐 git pull 명령어를 사용한다)
// 변경된 것만 다운 받는다
git full origin main
  • git branch : 프로젝트를 git에서 clone 받고 최초 커밋 후 branch 이름을 변경해야 한다. 여러 개발자와 작업하고 자신만의 독립적인 공간을 만들고 싶을때도 사용
git branch -M main
  • git merge : 하나의 branch로 병합한다. 

+ Recent posts