패스트 캠퍼스 MGS 3기 - 4월 12일

JY·2022년 4월 12일
0
post-thumbnail

💡 Keyword


  • Git의 이해
  • Git을 이용한 버전 관리(Push, Clone, Reset ...)
  • 브랜치(Branch)

1. Git 개요 및 설치


Git

Git은 컴퓨터 파일의 변경사항을 추적하고 여러 사용자들 간에 해당 파일 작업을 조율하기 위한 대표적인 버전 관리 시스템(VCS)이다. 효율적으로 프로젝트를 관리할 수 있는 것이 큰 장점이다.

Git 설치

https://git-scm.com/


다음 명령어를 통해 Git 버전을 확인할 수 있다.

$ git --version

기본 설정

VSCode에서 버전 관리를 하기 위해 처음 한 번 설정이 필요하다.

📌 개행 문자(Newline) 설정

  • OS
$ git config --global core.autocrlf input
  • Windows
$ git config --global core.autocrlf true

📌 사용자 정보 등록
commit(버전 생성)을 위한 정보를 등록해야 한다. 되도록이면 Git 가입 시 설정했던 아이디와 맞추는 것이 좋다.

$ git config --global user.name 'NAME'

특히, 이메일은 매칭 용도로 사용되므로 맞추기를 권장한다.

$ git config --global user.email 'EMAIL'

📌 입력된 정보 확인

$ git config --global --list

2. GitHub에 업로드(Push)


버전 관리 시작

현재 프로젝트에서 변경사항을 추적한다.

$ git init

버전 관리 상태 확인

$ git status


변경사항을 추적할 파일 지정

  • 특정 파일(index.html)을 지정
$ git add index.html


  • 모든 파일의 변경사항을 추적하도록 지정
$ git add . 


❗ 버전 관리가 필요 없는 파일들은 버전 관리를 선언하지 않아도 된다.

메시지(-m)와 함께 버전 생성

프로젝트 생성이라는 버전이 만들어진 것을 확인할 수 있으며, 변경된 부분이 없으므로 파일들은 회색 상태이다.

$ git commit -m '프로젝트 생성'


새로운 파일이 생성된 경우, main.js를 버전 관리하도록 등록해야 한다.($ git add .)

이전 버전에서는 main.js가 있지 않아 기존 프로젝트와 현재 프로젝트는 차이가 생겼다. 새로운 버전을 만들고 싶다면, commit을 이용한다.

$ git commint -m 'main.js 추가'


커밋 히스토리 확인

다음 명령어를 통해 커밋 히스토리를 조회할 수 있다.

$ git log

GitHub 새 저장소 만들기

현재 버전 관리를 하고 있는 프로젝트를 Git의 저장소에 업로드 하기 위해 필요한 저장소 주소이다.

원격 저장소를 연결

통상적으로 원격 저장소 별칭을 origin 사용한다. Git을 완벽하게 이해하고 사용하는 것이 아니라면 origin 사용을 권장한다.

$ git remote add origin https://github.com/jytrack64/git-practice.git


버전 내역을 전송

$ git push origin master


3. 브랜치(Branch)


Main(Master) Branch

제품으로 출시될 수 있는 브랜치이다.
배포(Release) 이력을 관리하기 위해 사용. 즉, 배포 가능한 상태만을 관리한다.

Develop Branch

다음 출시 버전을 개발하는 브랜치이다.
기능 개발을 위한 브랜치들을 병합하기 위해 사용. 즉, 모든 기능이 추가되고 버그가 수정되어 배포 가능한 안정적인 상태라면 develop 브랜치를 ‘master’ 브랜치에 병합(merge)한다.
평소에는 이 브랜치를 기반으로 개발을 진행한다.

Feature Branch

기능을 개발하는 브랜치이다.
feature 브랜치는 새로운 기능 개발 및 버그 수정이 필요할 때마다 ‘develop’ 브랜치로부터 분기한다. feature 브랜치에서의 작업은 기본적으로 공유할 필요가 없기 때문에, 자신의 로컬 저장소에서 관리한다.
개발이 완료되면 ‘develop’ 브랜치로 병합(merge)하여 다른 사람들과 공유한다.


signin이라는 가지(브랜치)를 만들어서 master 브랜치에 영향 없도록 개발한다. 개발이 모두 완료되면 브랜치를 병합(merge)한다.

git branch
git branch -a
git branch signin
git branch
git checkout signin

배포 툴(Netlify 등..)에서는 master 브랜치에 있는 내용을 가지고 사이트를 만들어준다. 따라서 signin 브랜치에서 어떤 작업을 해도 실제 웹 사이트에는 영향이 없다.

4. 복제(Clone)


해당하는 주소에 저장소 자체를 복제해서 현재 경로에 새롭게 생성한다.

$ git clone https://github.com/jytrack64/git-practice.git

5. 버전 되돌리기(Reset)


총 3가지 버전을 생성한 후, Git을 이용해 이전 버전으로 되돌려보는 예제이다.

바탕화면에 git-practice 폴더를 생성한 후, index.html 파일을 생성하였다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>1</h1>
</body>
</html>


현재 프로젝트에서 버전 관리를 시작할 것이므로 $ git init을 입력한다.

$ git init


상태를 확인해보면 변경사항을 추적 중인 상태가 아님을 알 수 있다.

$ git status


변경사항을 추적하기 위해 $ git add .을 입력한다.

$ git add .


버전을 생성하고,

$ git commit -m '1'


$ git log를 통해 버전이 제대로 생성되었는지 확인할 수 있다.

$ git log

위와 같은 방법으로 <h1>의 내용을 각각 2, 3으로 바꾸고 두 버전을 추가로 생성하였다.

이때 최신 버전(3)에서 가장 처음 생성했던 버전(1)으로 돌아가기 위해서는 $ git reset --hard HEAD~n 명령어를 사용한다. HEAD는 가장 최신 버전을 의미하고, ~n은 최신 버전으로부터 뒤로 n번째에 있는 버전으로 되돌아 가는 것을 의미한다.

$ git reset --hard HEAD~2


만일 버전 되돌리기가 잘못되었다면 다음 명령어를 입력하기 전까지 한 번 원상복구 할 수 있다.

$ git reset --hard ORIG_HEAD
profile
🙋‍♀️

0개의 댓글