[제로베이스] 데이터 사이언스 12기 - (03-21 스터디노트)

윤태호·2023년 3월 21일
0
post-thumbnail

오늘 수강한 강의 - Git 버전관리, Installing Git (01 ~ 05), Git 사용 준비 (01 ~ 05), Local Respository (01 ~ 09)

Git 버전관리

01 버전관리 시스템(형상관리)

  • Configuration Management Systems
  • Version Control Systems
  • Source Data + History
  • 협업, 작업추적, 복구 등이 가능

02 Git 등장 배경

  • Source Folder + 실행파일을 버전별로 카피하여 관리
  • 하루종일 개발한 코드가 컴퓨터가 다운 되면서 날아가버림
  • 그래서 파일의 버전을 관리하기 위하여

[Local Version Control Systems]

  • 내 컴퓨터에서 버전 관리 가능 → 내 컴퓨터 하드가 날아가면 전체 코드 사라짐
  • 버전은 관리되지만, 협업은 여전히 어려움
  • 그래서 중앙에서 관리

[Centralized Version Control Systems]

  • 협업이 가능해짐
  • commit 하는 순간 배포되어 다수에게 버그 유발 가능 (서버로 바로 commit)
  • 인터넷이 안되면 작업이 불가능
  • 자신만의 version history를 가질 수 없음
  • 그래서 개발되었다

03 버전관리 시스템의 종류

- CVCS - CVS, SVN, etc.,
- DVCS - Mercurial, Git, etc.,

[CVS]

  • 1980년대 만들어진 형상관리 시스템
  • commit 중 오류 발생 시 Rollback 이 되지 않는 등의 문제
  • 이후 SVN 으로 대체됨

[SVN]

[Git]

  • https://git-scm.com/
  • SVN 보다 빠른 속도와 많은 기능을 지원
  • 현재 많은 기업이 사용 중

[요즘 기업들은]

  • 대부분 SVN 혹은 Git 사용 중

04 Git 기반의 서비스
[Github]

  • https://github.com
  • Git 을 호스팅 해주는 웹 서비스, 협업을 위한 기능을 제공
  • 참고 - 소스코드 보안이 중요한 경우 사용을 기피함

[Gitlab]

  • https://gitlab.com
  • 설치형 버전관리 시스템 - 소스코드 보안이 중요한 기업에서 주로 사용
  • 클라우드 버전 관리 시스템 - 10명 이하 무료 (Github 와 유사)
  • Issue tracker, Git Remote Repository, API, Team, Group 기능 제공

01 ~ 05 Installing Git

Installing on Windows

  • [Git 설치 확인]
    프로그램 목록에 Git 관련 앱이 존재하거나 검색된다면 설치 Pass
  • [Git Download]
    git-scm.com/download/win
  • [Git 설치]
    다운로드 받은 실행파일 (Git-2.33.1-64bit.exe)을 더블클릭
  • Git 라이센스 정책 확인 > Next 클릭
  • Git 이 설치될 경로 확인 > Next 클릭
  • 설치할 구성요소 선택 > 기본 선택 상태 그대로 Next 클릭
  • 시작 폴더 경로 선택 > Next 클릭
  • Git 이 사용할 기본 에디터 선택 (Vim) > Next 클릭
  • Git Default Branch 명명 규칙 > Next 클릭
  • 환경변수 변수 PATH 설정 > Next 클릭
  • OpenSSH 옵션 선택 > Next 클릭
  • HTTPS 전송방식 선택 (OpenSSL 인증) > Next 클릭
  • Commit, Checkout 줄바꿈 스타일 선택 > Next 클릭
  • Terminal Emulator 설정 > Next 클릭
  • Git Pull 작업 방식 선택 > Next 클릭
  • 신용관리방법 선택 > Next 클릭
  • 기타 옵션 (메모리에 캐싱) > Next 클릭
  • 새로 개발중인 옵션들 > Next 클릭
  • 설치 완료 > Finish 선택
  • [Git 설치 확인]
    시작메뉴 > Git > Git Bash 실행

01 ~ 05 Git 사용 준비

GitHub 가입

  • GitHub 사이트
    https://github.com
  • Git 에서 사용할 email 주소 > continue
  • Password > continue
  • Username > continue
  • Create Account
  • Mail 확인 후 Code 입력
  • Welcome > Just me, Student > Continue
  • Collaborative coding > Continue
  • Skip personalization
  • Git 가입 확인

Git Global Configuration

  • [Global Username & Email]
  • Global Username & Email - 예제
  • [CRLF - Windows]
Windows - 가져올 때는 LF 를 CRLF 로 변경하고 보낼때는 CRLF 를 LF 로 변경

  • [CRLF - Mac]
    Mac - LF 만 사용

    [참고 - Line ending]
- Windows : CR (\r) + LF (\n)
- Unix or Mac : LF (\n)
- Windows 사용자와 Mac 사용자가 같은 Git Repository 를 작업할 때 코드에서 변경된 내용이 없어도 CRLF 차이로 인해 commit 이 발생할 수 있음
  • [Editor]
  • Editor - 예제
  • [전체 설정 확인]
  • 전체 설정 확인 - 예제
  • [항목별 설정 확인]
  • 항목별 설정 확인 - 예제

Git 기본 용어

  • [Repository]
- 소스코드가 저장되어 있는 여러 개의 Branch 가 모여있는 디스크상의 물리적 공간
- Local Repository 와 Remote Repository 로 구분
  • [Checkout]
- 특정 시점이나 Branch 의 소스코드로 이동하는 것을 의미
- Checkout 대상 - Branch, Commit, Tag
- Checkout 을 통해 과거 여러 시점의 코드로 이동이 가능
  • [Stage]
- 작업할 내용이 올라가는 임시저장영역
- 이 영역을 이용하여 작업한 내용중 commit 에 반영할 파일만 선별하여 commit 을 수행할 수 있음
  • [Commit]
- 작업할 내용을 Local Repository 에 저장하는 과정
- 각각의 commit 은 의미있는 변경단위이고, 변경에 대한 설명을 commit log 로 남김
- 권장 - commit 을 아끼지 마세요 (게임의 save point, 아끼면 똥됩니다)
- 참고 - commit 단위나 commit log format 을 정해놓은 회사나 팀도 있음 (빌드 서버를 사용하는 경우)
  • [Tag]
- 임의의 commit 위치에 쉽게 찾아갈 수 있도록 붙여놓은 이정표
- Tag 가 붙은 commit 은 commit id (version) 대신 tag name 으로 쉽게 checkout 가능
  • [Push]
- Local Repository 의 내용 중, Remote Repository 에 반영되지 않은 commit 을
Remote Repository 로 보내는 과정
- 권장 - Push 하는 순간 다른 개발자들도 영향을 받음
- 검증되지 않은 코드는 Push 하지 않도록 함
  • [Pull]
- Remote Repository 에 있는 내용 중, Local Repository 에 반영되지 않은 내용을 가져와서
Local Repository 에 저장하는 과정
- 다른 팀원이 변경하고 Push 한 내용을 Local Repository 에 가져올 수 있음
- 참고 - Push 과정에서 Conflict (충돌)이 일어나서 Push 가 거절된 경우, Pull 을 통해 Remote Repository 의 변경 내용을 Local Repository 에 반영하여 Conflict 를 해결 한뒤 다시 Push 를 시도해야 함
  • [Branch]
- 특정 시점 (commit 단위) 에서 분기하여 새로운 commit 을 쌓을수 있는 가지를 만드는 것
- 개발의 주축이 되는 branch 를 master branch (혹은 main branch) 라고 함
- 모든 branch 는 최종적으로 다시 master branch 에 merge (병합) 되는 형식으로 진행 됨
  • [Merge]
- Branch 의 반대개념으로 하나의 Branch 를 다른 Branch 와 합치는 과정
- Merge 되는 두 Branch 는 주종관계가 성립. 예 - dev branch 를 main branch 에 merge
- Merge 되는 과정에서 Confict (충돌) 이 발생하는 경우 Diff 를 수정하여 Conflict 를 해결한 뒤 Merge 를 진행 할 수 있음

01 ~ 09 Local Repository

Local Repository 구성

  • Local Repository 는 Git 이 관리하는 3가지 단계로 구성되어 있음
- Working Directory (작업공간) - 실제 소스 파일, 생성한 파일들이 존재
- Index (Stage) - Staging area (준비영역) 의 역할, git add 한 파일들이 존재
- HEAD - 최종 확정본, git commit 한 파일들이 존재

Local Repository 생성

  • [Workspace 생성]
  • [Working Directory 생성]
Workspace 로 이동한 뒤 Working Directory 생성

  • [Git init]
폴더에서 Git 을 초기화하는 명령어를 사용하면 해당 폴더를 Git 이 관리하기 시작

  • 실습
생성한 폴더로 이동하여 Git init 을 실행하면 Repository 가 생성됨

  • [.git 확인]
git 폴더가 생성된 것을 확인 → .git 으로 이동해서 파일을 살펴보면 Git 관련 파일들이 생성된 것을 확인

  • [파일 생성]
- Working Directory 에 파일을 생성
- 참고> touch 명령어 - 빈 파일을 생성

  • [Git Status]
Git 에 존재하는 파일 확인


  • [Git Add]
Working Directory 에서 변경된 파일을 Index (stage)에 추가

  • 실습
  • [Git Commit]
Index (stage) 에 추가된 변경사항을 HEAD 에 반영 (확정)

  • 실습

Remote Repository 생성

  • Create respository 버튼 클릭
  • 프로젝트 이름을 설정한 뒤 빈 프로젝트 상태로 > Create repository 클릭
  • Remote Repository 생성 확인
  • Github Token 생성
얼마전부터 보안상의 이유로 Remote Repository 접속 시 비밀번호 대신 Token 을 사용
  • 사용자 메뉴에서 Settings 선택
  • Developer settings 선택
  • Personal access tokens 선택
  • Generate new token 선택
  • Token 이름 입력 + No expiration 을 선택 + repo 선택 > Generate token 버튼 선택 (그림 다음 장)
  • Token 생성 완료 - 이후에는 Token 값이 보이지 않으므로 반드시 잘 복사해두세요

Remote Repository 등록

Local Repository 에 연동할 Remote Repository 를 등록 (Token 사용)
  • [Remote Repository 주소 확인]
왼쪽 상단 고양이를 눌러서 GitHub Home 으로 이동 > 생성해둔 Remote Repository 선택

  • HTTPS 선택 확인 > 주소 복사
  • [Local Repository 에 Remote Repository 등록]
Remote Repository 등록

  • Remote Repository 등록 with Username and Token
  • 실습
  • Remote Repository 정보 확인
  • 실습

Remote Repository 에 변경내용
Push 하기

Local Repository (HEAD) 에 반영된 변경내용을 Remote Repository 에도 반영하기 위해서는 Git Push 를 사용
  • [Git Push]
  • 실습
  • [Remote Repository 확인]
Remote Repository 페이지에서 새로고침 하면 Push 된 파일이 보임

Remote Repository 에 Pull 하기

Remote Repository 의 내용에 맞춰 Local Repository 를 갱신하려면 Git Pull 사용
  • [ReadMe 파일 생성]
Add a README 버튼 클릭

  • 내용 확인 (모두 Default 설정으로)
  • 하단의 Commit new file 버튼 선택
  • README 파일 생성 확인
  • [Git Pull]
  • 실습

재미있었던 부분

새로운 Git 계정을 만들어서 사용해 보고 Git bash를 처음 사용해 본 것이 가장 기억에 남는다

어려웠던 부분

복잡한 부분은 특별히 없었다
그러나 push와 pull이 조금 생소해서 아직은 잘 이해가 가지 않는다

느낀점 및 내일 학습 계획

이제 막 Git 과정을 들어왔고 완전히 다른 개념으로 시작하는 새로운 과정이라서 아직은 뭐가 뭔지 잘 모르겠다
내일은 EDA 테스트와 더불어 다음 Git 파트를 수강할 예정이다

profile
부트캠프 참여중

0개의 댓글