패스트캠퍼스 메가바이트스쿨 Day2 (1주차 화요일 - Git, GitHub)

ctaaag·2022년 4월 13일
0
post-thumbnail

git이란 무엇인가?

Git?
컴퓨터 파일의 변경사항을 추적하고 여러 사용자들 간에 해당 파일 작업을 조율하기 위한 버전관리 시스템(VCS)이다.

Q) 버전관리 시스템은 뭐지? 형상관리 시스템과는 뭐가 다른가?

A) 형상관리란 스프트웨어 구성 관리라고도 하는데, 이는 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것. 소스코드 뿐만 아니라 개발 환경, 빌드 구조 등 전반적인 환경/내역에 대한 관리 체계를 정의하고 있다.

변경 관리 - 소스코드 변경 사항에 대한 관리
버전 관리 - 변경사항을 '버전'이란 개념을 통해 관리
형상 관리 - 위의 개념을 포함한 프로젝트와 관련된 모든 변경사항을 관리

이런 식으로 각각의 개념들이 있는데 형상 관리>버전 관리>변경 관리 순서로 개념이 구체화된다.
(*형상관리와 버전관리가 같은 것인 줄 알았는데 알고 보니까 형상관리가 조금 더 상위 개념이다)

형상관리 시스템에는 중앙집중식 형상관리 시스템과 분산형 형상관리 시스템으로 나뉘는데, 중앙집중식 형상관리 시스템은 한 서버에서 모든 것들을 다뤄서 중앙제어 컴퓨터가 에러가 나면 공동작업하는 데이터가 모두 사라지지만 분산형 형상관리 시스템은 내가 수정한 작업 및 내역들이 통째로 다운로드 되고, 공유할 수 있기 때문에 한 명의 컴퓨터가 고장이 나더라도 다른 사람들이 복구/공유를 할 수 있어 작업 시 발생한 컴퓨터의 문제를 보완할 수 있다.

그렇다면 다시 돌아와서 Git은 즉 변경 사항에 대해서 '버전'이라는 개념을 통해서 관리하고, 내가 올린 Repository의 완전한 복사본을 로컬에 저장하는 방식으로 조율하는 시스템이라고 볼 수 있다.

기본 설정 - 다운로드 여부 확인 방법

git --version

개행문자 설정

  • Git은 각각의 서버에서 변경사항을 기록하기 위해 나온 시스템인데, 문제는 각 OS마다 문자를 처리하는 방식이 다르다. 그래서 Git을 할 때는 개행 문자 설정 즉, 줄바꿈 처리를 할 때 각기 다른 환경에서도 잘 동작할 수 있도록 문제를 해결할 수 있게 설정해야한다. 이를 개행문자 설정이라고 함
git config --global core.autocrlf input
  • git에서 하이픈(-)이 한 개 혹은 두 개가 붙는 것을 플래그라고 함. 플래그 뒤에 글로벌이 오면 전역객체를 뜻 함.

사용자 정보 설정

git config --global user.name 'Your_Name'
git config --global user.email 'Your_Email'
git config --global --list
  • 사용자 정보는 본인의 GitHub의 이름과 이메일을 사용하는 편이 좋다.
  • 사용자 정보가 잘 입력되었는지 확인하기 위해서 --list를 이용하면 된다.

브랜치 생성

git init을 통해서 master라는 브랜치를 형성하게 됨.
브랜치는 추적관리의 가장 큰 줄기라고 생각하면 됨

git init <!-- 버전관리 시작 명령 -->
git add . <!-- 전체 파일 선택 -->
git add '파일명' <!-- 특정 파일 선택 -->
git commit -m '프로젝트 생성(버전의 이름)' <!-- 버전 생성 -->
git log <!-- 버전 생성되었는지 확인 -->
git status <!-- 깃 상태 확인 -->
  • 현재 프로젝트에서 변경사항 추적(버전관리)을 시작한다는 것. 브랜치(master)를 생성해서 진행한다.

  • 브랜치를 생성했다고 해서 버전관리를 할 수 있는 것은 아니고 stage에 변경사항 추적할 특정 파일을 지정해야만 한다. 보통은 git add .를 통해서 모두 추적할 수 있도록 지정함

  • commit을 통해 메시지와 함께 버전을 생성할 수 있다.

  • 그러나 버전 생성 이후 파일을 추가하면 마스터 브랜치에 프로젝트 생성을 했지만, 추가한 파일을 관리를 할 것인지 말 것인지를 git add.를 통해서 선언할 것. 기존의 프로젝트와 현재 수정한 버전은 git add를 하지 않으면 생성된 버전에 저장되지 않은 상태

  • 이를 확인하려면 git status 하면 됨. 빨간색으로 터미널에 나오는 것이 있다면 저장이 아직 안되었다는 것. 혹은 VScode에서 u아이콘이 뜨면 저장 안된 것 (저장되면 m으로 바뀐다)

원격저장

git remote add origin 저장소주소 <!-- 생성버전을 저장소에 저장하기(원격저장) -->
git remote -v <!-- 설정한 remote 목록을 확인 -->
git push origin master <!-- 저장소에 -->
  • git을 내 컴퓨터에만 저장하는 것이 아니라 원격저장소에 저장을 해서 다른 사람들과 공유할 수 있도록 하는 대표적인 것이 GitHub이다. Github외에 BitBucket,Gitlab 등이 있다. 저장소는 레퍼지토리라고 부른다.
  • git remote add origin 저장소주소 여기서 origin에 해당되는 부분은 저장소의 이름인데, 보통 origin이라는 것으로 진행함.
  • 해당 작업까지 하면 컴퓨터와 원격저장소 간의 통로가 만들어진다고 생각하면 됨
  • 해당 통로에서 push를 하면 원격저장소에 git이 업로드가 됨

저장소 개념

  • 중앙 원격(remote) 저장소 : 여러 명이 같은 프로젝트를 관리하는데 사용하는 그룹 계정의 중립된 원격 저장소
  • 로컬(local) 저장소 : local repository라고 불리고, 내 pc에 파일이 저장되는 개인 전용 저장소

    출처 : GitHub으로 협업하는 방법

브랜치 추가하기

git branch <!-- 브랜치 목록 확인 -->
git branch -a <!-- 브랜치 목록과 원격제어 파일 이름 함께 확인 -->
git branch 브랜치명 <!-- 브랜치명에 해당하는 브랜치 생성 -->
git checkout 브랜치명 <!-- 브랜치명에 해당하는 브랜치로 이동하기 -->
  • 브랜치를 추가한다는 것은 사이트에 특정 기능을 개발하고 추후에 개발이 완료되면 브랜치를 병합하는 것이다.
  • 새로운 브랜치를 만들어서 작업을 할 때는 기존 마스터 브랜치의 상대경로가 적용이 잘 되고 있는지 확인할 것. 대부분의 경우에는 상대경로가 잘 적용되지 않기 때문에 수정을 해줘야함
  • 새로운 브랜치로 바뀌었는지 확인하기 위해서는 좌측 상단에 변경된 브랜치의 이름이 나와있어야 함.

브랜치 종류

  • Master branch : 배포이력을 관리하기 위해 사용. 즉, 배포 가능한 상태만을 관리
  • Develope branch : 다음 출시 버전을 개발하는 브랜치. 평소에는 이 브랜치를 기반으로 개발
  • Feature branch : 기능을 개발하는 브랜치. develope 브랜치의 세부사항 개발 및 버그 수정시 사용
  • Release branch : 이번 출시 버전을 준비하는 브랜치. develope브랜치가 모이면 release 브랜치로 분기
  • Hotfix branch : 출시 버전에서 발생한 버그를 수정하는 브랜치. 수정 후 마스터 브랜치에 병합
    Git Branch 종류(5가지)

브랜치 머지하기 (Merge)

  • 브랜치를 머지한다는 것은 다른 브랜치에서 작업하는 것을 합친다는 것이고, GitHub에서 pull request 입력을 통해 머지하면 됨.
  • GitHub을 통해 머지하면 수정된 내용들을 확인할 수 있음.

프로젝트 복제하기 (Clone)

  • GitHub에서 코드 주소 복사하기
  • 터미널에서 프로젝트 경로 확인하기 : Mac - ls
  • 프로젝트 경로 빠져나가기 : cd ..
  • 프로젝트 파일 경로 바꾸기 : cd .\Desktop\
  • 저장소 내에 프로젝트 복제하기 : git clone 링크주소

*Tip
vscode에서 폴더 직접 안열고, 터미널 명령을 통해 코드 열시
터미널로 해당 경로에 들어간 뒤 code . 명령으로 열 수 있음.
만약 현재 vscode창에서 열고 싶다면 code . -r 로 입력하면 된다.

버전 되돌리기 (Reset)

git reset --hard HEAD~1 <!-- 1단계 전 단계로 되돌리기 -->
git reset --hard ORIG_HEAD <!-- 되돌리기 이전 상태로 복구하기 -->
git reset --hard HEAD~2 <!-- 2단계 전 단계로 되돌리기 -->
git log <!-- 틈틈히 잘 변경되었는지 확인하는 것 중요! -->
  • 버전을 되돌리는 것은 코드들이 다 사라질 수 있기 때문에 가급적 신중히 하는 것이 좋음.

다른 환경에서 시작하기

git branch  <!-- 브랜치 가져오기 -->
git branch -r <!-- 브랜치 목록 보기(만약 원격저장소와 로컬 저장소의 이름이 똑같으면 화살표로 표시됨 -->
git checkout -t 브랜치명 <!-- 원격저장소에 있는 다른 브랜치 가져오기 -->
git branch -d 브랜치명 <!-- 브랜치 삭제하기 -->
git checkout -b 브랜치명 <!-- 브랜치 생성과 동시에 체크아웃 하기 -->
  • 브랜치 가져오기 프로세스
  • 브랜치를 삭제하기 위해서는 해당 브랜치가 아닌 다른 브랜치로 이동해서 삭제해야함

충돌, 로컬 병합

git pull origin master <!-- 원격저장소 버전 불러오기 -->
  • 만약 새롭게 만든 브랜치를 GitHub저장소에 올리려고 push하면 충돌이 될 수 있음. 충돌이 되면 보통
    git pull origin master를 통해서 이전 원격저장소 버전을 불러오고 어떤 내용을 적용할지 골라주면 됨.
  • vscode에서는 상단에 클릭을 해서 버전을 선택할 수도 있고, 아예 새로운 버전을 만드려면 나머지 부분을 지우고, 해당 부분만 수정해도 됨.

오늘의 회고

  • 처음으로 git과 github에 대한 개념을 배웠다. 아직은 익숙하지 않고, 실제 적용도 많이 못해봤기 때문에 협업을 하는 과정에서 꾸준히 적용하면서 해봐야겠다.
  • 배운 내용을 소화하고 적용하기에도 많이 벅차기 때문에 당일 배운 것들은 매일 블로그에 업로드를 하면서 배운 내용을 잘 소화하고, 가능하다면 다음 날 배울 것도 미리 예습해야겠다.
profile
프로그래밍으로 지속가능한 세상을 꿈꾸며

0개의 댓글

관련 채용 정보