Git: 세팅 및 사용법

1. Git에 대하여

Git이란 소스코드를 효과적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템' 이다.

Git에서는 소스 코드가 변경된 이력을 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있다.

또 내가 올리려는 파일이 누군가 편집한 내용과 충돌한다면, 서버에 업로드 할 때 경고 메세지를 보내주어서 누군가가 애써 편집한 내용을 덮어써버리는 실수 방지해 줍니다.

1.1. Git에서 사용하는 용어

  1. Commit

파일을 추가하거나 변경 내용을 저장소에 저장하는 작업

  1. push

내 PC의 로컬 저장소에서 변경된 이력을 원격 저장소에 공유하려면, 로컬 저장소의 변경 이력을 원격 저장소에 업로드해야 합니다.

웹 상의 원격 저장소로 변경된 파일을 업로드하는 것을 Git에서는 푸시(Push)라고 합니다. push 를 실행하면, 원격 저장소에 내 변경 이력이 업로드되어, 원격 저장소와 로컬 저장소가 동일한 상태가 됩니다.

  1. pull

pull 을 실행하면, 원격 저장소에서 최신 변경 이력을 다운로드하여 내 로컬 저장소에 그 내용을 적용

  1. clone

누군가의 변경 이력이 적용된 원격 저장소가 있으면, 그걸 웹에서 통째로 복제해와 내 PC에서 직접 작업할 수 있음

변경 이력도 함께 로컬 저장소에 복제되어 오므로, 원래 원격 저장소와 똑같이 이력을 참조하고 커밋을 진행할 수 있음

  1. repository
  1. Branch

하나의 프로젝트에서 여러 사람이 동일한 소스코드를 기반으로 서로 다른 작업을 할 때에는 각각 서로 다른 버전의 코드가 만들어 질 수 밖에 없다.

이 때 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어주는 것이 브랜치

👉 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니다. 👉 또한 이렇게 만들어진 브랜치는 다른 브랜치와 병합(Merge)함으로써, 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있습니다.

  1. Tag


2. Github (원격저장소) 세팅하기

git은 기본적으로 local 저장소에서 작업을 합니다.

여러 사람이 동시에 형상관리를 하기 위해서는 원격 저장소가 있어야 하며, 가장 많이 쓰는 원격 저장소로는 대표적으로 Github가 있고 그밖에도 GitLabs, BitBucket 등이 있습니다.

각 원격 저장소마다 저장소를 공개 여부, ci/cd, 배포등 기능이 다르고 같은 기능이 있어도 무료, 유료 여부가 나뉘므로 원격 저장소를 사용하는 팀원 들끼리 정해서 사용하면 될 것 같습니다.


2.1. Git 세팅

다음 깃 세팅을 하면 해당 이메일로 git이 커밋 됩니다.

git config --global user.name "ByeongminLee"
git config --global user.email bmlee531@gmail.com

// 한글
git config --global core.precomposeunicode true
git config --global core.quotepath false

2.2. SSH 인증서 생성

원격 저장소에는 private 저장소가 있고, public 저장소가 있습니다. public의 경우 모두가 볼 수 잇고 해당 저장소를 clone할 수 있지만, private 저장소는 해당 저장소에 권한이 있을 경우에만 clone할 수 있습니다.

또한 어떤 원격 저장소든 해당 저장소에 commit을 하여 기여를 하려면 해당 저장소에 대한 권한이 있어야 합니다.

팀원들이 private으로 저장소를 만들고 프로젝트를 만들고 있다고 할때 해당 저장소를 접근하는 방법은 ssh 키로 해당 접근 권한을 확인합니다.

ssh-keygen

이 경로에 파일이 생성 될 것이다. >> Enter

비밀번호 입력한다. 여기서 비밀번호를 입력하면 이후에 계속 비밀번호를 입력해야 되서 그냥 엔터 확인하라 나오면 다시 엔터하면 된다.

완료 !

.ssh/id_rsa .ssh/id_rsa.pub이 두파일이 있으면 된다. . 이 붙은 폴더는 숨긴폴더 이다.

즉 터미널로 /User/bm/.ssh 경로로 들어가서 파일을 확인해야 한다. 그 폴더를 열려면 open .을 하면 된다.


2.3. 깃허브 인증서 연결



3. git 사용하기

3.1. git 세팅

  1. git을 사용할 폴더로 이동한다.

  2. 다음 명령어를 통해 빈 git 저장소를 만든다.

    git init
    
  3. 이름과 이메일 등록 (위에서 설명했듣이 해당 깃에서 사용할 내 정보를 등록해야한다.)

    git config --global user.name "내 이름"
    git config --global user.email "내 메일 주소"
    

3.2 현재 시점 관리하기

붉은 글씨로 나오는 파일들은 Untracked files들은 로 형상 관리가 되지 않는 파일들이다.

옵션

--hard : 돌아가려는 이력 이후의 모든 내용을 지워 버린다. --soft : 돌아가려 했던 이력으로 돌아가고, 이후의 내용이 지워지지 않고, 해당 내용의 인덱스(스테이지)도 그대로 있다. --mixed : 돌아가려는 이력 이후에 변경된 내용에 대해서는 남아 있지만, 인덱스는 초기화 된다.

이 기능은 특정 commit을 되돌리는 작업도 하나의 commit으로 간주하여 commit history에 추가하는 방식이다.

reset의 --soft, --mixed와 동일한 결과를 가져오지만 history가 다르다.


3.3. Branch: 동시에 여러 코드를 관리하기

3.3.1. Merge: branch 병합하기

3.3.2. 병합 Conflict

동시에 같은 파일의 같은 부분을 수정한 뒤 Merge 하려고 하면 충돌(CONFLICT)가 일어난다. 둘 중 하나의 파일을 수정해주고 git add, gir commit하여 다시 merge해주면 된다.

3.3.3. Rebase

branch가 많아서 복잡해지게 되었을때 git rebase [브랜치명] 명령어로 변경사항들을 한 줄로 정리해준다.