[제로베이스 데이터 취업스쿨] 23.07.27 스터디 노트

김준호·2023년 7월 27일
0
post-thumbnail

git 다운로드

  • 홈페이지에서 window버전으로 다운
  • 모든 설정값 디폴트로 다운

github 가입

  • github 홈페이지에서 회원가입하기
  • user name은 포트폴리오나 이력서에 코드공유중에 자주 노출이 되기 떄문에 신중히 설정

github 설정

  • git bush를 관리자권한으로 실행(마우스 오른쪽 클릭)
  • global username & email

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라고 생각)
  • 참고 - 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(병합) 되는 형식으로 진행 됨

Mergr

  • Branch의 반대개념으로 하나의 Branch를 다른 Branch와 합치는 과정
  • Merge되는 두 Branch는 주종관계가 성립. 예=dev branch를 main branch 에merge
  • Merge되는 과정에서 Conflit(충돌) 이 발생하는 경우 Diff 를 수정하여 Conflict를 해결한 뒤 Merge를 진행 할 수 있음

1. Local Repository, Remote Repository

1) 구성

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

2) 생성

2-1) Workspace 생성

  • 강의 내용을 진행하기 위한 파일을 생성(접근하기 쉬운 경로)

2-2) Working Directory생성

Workspace로 이동한 뒤 Workig Directory생성

  • master branch 생성 (가장 최초로 생성한 것이라서 master)
  • Index(Stage)에 반영
  • HEAD에 반영

2-3) Remote Repository 등록

  • 등록 이전에 Github에서 Repository 생성을 해야 한다.
  • token도 발행받아서 꼭 다른곳에 복사해 놓자, 자주 사용하지만 다시 확인 할 수 없기 때문

등록

  • 정보 확인
    git remote -v

2-4) Remote Repository에 변경내용 Push

  • origin이라는 Remote Repository에 변경값 Push
  • git push origin < branchname >(master or main)

2-5) Remote Repositort에서의 변경내용 Pull

  • Pull하기 전 Remote에서 변경사항을 만들어야 하기 때문에 새로운 파일을 생성하고 나서 pull을 해야 한다.(Pull 실습을 하기 위해서 환경을 만드는 것 뿐)
  • 변경이 되었다면

-origin이라는 Remote에서의 변경사항을 master로 pull

  • git pull origin master

3. Remote Repository

  • 위에서는 Local에서 변경사항을 Remote로 pust하는 방법과
    Remote를 우리가 생성해서 변경사항을 Local로 pull하는 방법을 봤다.

  • 이번에는 다른 사람들이 공유해준 Remote Repository를 Local로 가져와서 사용해 보자.

3-1) Remote Repository 생성

  • 공유된 Remote Repository를 가져올 Remote Repository 생성해야 한다.

  • 이번에는 앞서 생성한 것과는 조금 다르다

  • Add a Readme 체크

  • Add .gitignore 에 Phthon선택

  • 생성 후 화면

3-2) Default Branch(master or main)

  • git 은 master이나 github에서는 몇년 전부터 main을 사용

  • 헷갈리니까 이름을 수정해서 사용해도 되지만 이미 다른 팀원들이 main으로 사용했다면 중간에 이름을 바꾸는것이 더 혼동을 줄 수도 있다.

  • 기본 default branch이름을 바꾸려면
    프로필 클릭 -> setting -> repositoties 에서 main을 master로 변경

3-3) Remote Repository 복사하기

username과 token을 넣어주면 이후에 더이상 token을 입력하지 않아도 된다.

  • 복사해올 workspace에서 명령어 입력을 해야 한다.

4. Branch

4-1) Branch 조회

  • 로컬에서 생성한 branch만 조회
git branch
  • Remote Branch조회
git branch -r
  • Local과 Remote모두 조회
git branch -a

4-2) Branch 생성

git branch branch01

4-3) Branch 이동

git checkout branch01

4-4) Branch 생성 + 이동

git checkout -b <branchname>

4-5) Remote Repository에 branch push

git push origin <branchname>

4-6) Branch 삭제

git branch -d <branchname>
  • 로컬에서 만든 branch 삭제
  • 삭제할 branch에 위치해 있으면 안된다.
  • 삭제할 branch에 위치해 있다면 다른 branch로 이동하고 삭제
  • branch 이동 : git checkout < branchname >
git push origin --delete <branchname>
  • Remote의 branch 삭제

5. Log and Diff

  • 실습 하기 전에 vscode에서 git graph를 다운 받아 놓자

5-1) 실습환경 만들기

  • Remote Repository 생성
    이름 : log_project
    Add a README file 체크
  • HTTP주소 카피해서 local에 clone
    • remote를 local에 연결시키는 것
git_ws% git clone http......username:token@.....git

5-2) Git Log

  • branch 별 변경 이력을 볼수 있다.
git log
  • 실습
  • main branch의 log
  • 밑에서부터 시간순서이다.
  • 실습2

5-3) Git Editor

  • Git 설치할 때 Vim을 기본 Editor로 설정 했었다. 실습은 vscode로 하기 떄문에
    기본 에디터를 vscode로 변경

5-4) Git Diff Tool

  • 변경사항을 볼 수 있다.

Git Configuration 파일 열기

Git Diff 설정 추가

  • Git Diff Tool을 vscode로 하겠다 라는 명령어

본격적으로 Git Diff사용

Git Diff - Local Branch 간 비교

  • 실습
  • 실습2 :difftool을 이용

Git Diff - Commit간 비교

  • 실습1.
    먼저, commit Hashcode를 알아야 한다. 보는 법은 git log
  • 비교하고 싶은 두개의 commithashcode를 복사

Git Diff - 마지막 Commit 과 이전 Commit 비교

git diff HEAD HEAD^
  • 실습1

Git Diff - 마지막 Commit 과 현재 수정사항 확인

git diff HEAD
  • 실습. commit하지 않고 현재 hello.py 수정

Git Diff - Local and Remote 간 비교

git diff <branch> origin/<branch2>
  • 실습


profile
취업공부

0개의 댓글