[U Stage] Week4 Github 특강 1 - 기본 활용법

윰진·2022년 10월 11일
1

NaverAIBoostCamp정리

목록 보기
12/30

github 특강

reference : 선행,후행 수업을 알 수 있는 사이트

  • git 과 vs code 를 준비하자.

GOAL

  • 1회차: github 활용 방법 ( 개인 ) + 협업에 대한 그림
    • init, add, commit
    • HEAD 옮기기 : git checkout
    • 돌아오기 : git checkout master
    • 버전 취소 ( master 이동 ) : git reset --hard
    • 버전 복구 ( 작업 내역 조회 ) : git reflog
    • 브랜치 만들기 : git branch exp

버전 관리 {\rightarrow} 백업 {\rightarrow} 협업

  • 버전 관리를 탄탄히 하면 백업과 협업이 쉬워진다.

버전관리를 하는 것과 하지 않는 것의 차이

버전 관리를 하지 않는다면, 코드 전체를 전수 조사해야한다.
버전 관리를 한다면, 롤백을 해가면서 버그가 없는 버전까지 찾아갈 수 있다.

  • 버전 내에서 버그를 찾을 수 있다.

VSCode 와 Git

  • GUI 로 git 을 controll 할 수 있다.

  • ctrl + , 설정화면에서 git 폴더 조회 여부를 설정할 수 있다.

  • 사용자 정보 설정

git config --global user.name "사용자이름"
git config --global user.email "사용자이메일"
  • 확장 프로그램 : git graph 설치

VSCode 에서 terminal 을 써보자!

  • 기본 프로필 선택 에서 git bash 선택

  • pwd 로 내 경로 확인

  • git init

  • git status

  • 손깃으로 깃의 동작을 이해해보자.

    • project foldedr
      • working directory
        • A
        • B
      • repository
    • git add A : A 가 stage area 로 넘어간다.
    • git commit : stage area 의 파일이 repository 로 전달된다.
  • git add work1.txt ( 선택적 커밋 )

  • git commit -m "message"

커밋 식별자 commit id 는 어떻게 만들어질까?
SHA1 hash algorithm 으로 commit id 를 생성한다. ( 고유한 40글자의 id )

  • commit 내용, commit file, user email, commit 시간 등을 포함해 SHA1 hash algorithm 수행
    {\rightarrow} commit id 가 같으면 같은 commit 임을 보증할 수 있다.
  • git add work2.txt

  • 참고 master 는 마지막 version 을 가리킨다.

  • git log || git log --oneline : 상태 확인

  • 참고 git config --global init.defaultBranch main : default branch 변경

각각의 버전은 그 버전이 만들어진 시점에 stage area 의 스냅샷이다.

  • git checkout dfca948: HEAD 옮기기
    • work1.txt 가 처음 commit 된 시점으로 돌려보자.

  • git log --oneline --all

    • master : 마지막 작업을 가리킨다.
    • HEAD : 현재의 작업을 가리킨다.
      - 현재 작업이 수행되는 곳
  • git checkout master || git checkout e28cf2e

    • 마지막 작업으로 돌아오기

참고 HEAD 가 가리키는 버전이 새로 만드는 버전의 parent 가 된다.
참고 HEAD 가 version 을 직접 가리키고 있으면 HEAD 가 새로운 버전을 직접 가리킨다. ( detached state )

  • 실험 , 신기능 개발을 할 때 detached state 에서 하면 아주 유용하다.
    참고 HEAD 가 master 를 가리키면 attached state

  • detached state 에서 작업하다가 코드 되돌리려면 git checkout master

  • detached state 에서는 불안정해진다.!
    참고 git 의 불변성은 안정성을 보장한다.

  • commit id 를 기억하고 있으면 복원할 수 있다 !

    • .git/logs/HEAD : hash id 기록
  • git reflog
    - reference 의 변화를 기록한 log
    - 어떤 작업을 했는지 flow 가 모두 기록된다.

Branch에 대해 알아보자.

branch 생성

  • git branch exp
    또는

branch 병합

git merge exp

branch 병합 시에는 순서가 중요하다.

  • master 가 exp 를 병합한다. : 실험 끝
    • master 가 exp 의 내용을 흡수한다.
    • HEAD 는 master 를 가리킨다.
    • master 와 exp 를 parent 로 가진다.
  • exp 가 master 를 병합한다.
    • exp 에 master 의 상태를 update 한다.
    • 자주 해주자 !!

master 와 exp 를 parent 로 가진다.

branch 병합 취소 - reset

practice

    1. project folder 를 만든다.
    1. git init
    1. file 생성 : work1.txt, work2.txt, work3.txt
    1. commit 분할
    • git add work1.txt
    • git commit -m "work 1"
    • git add work2.txt work3.txt
    • git commit -m "work 2"

참고 add 취소 : git rm --cached work2.tx

    1. git log --oneline
    • 돌아가고자 하는 commit 의 id 획득
    1. git checkout "commit_id"
    1. git checkout master
    • HEAD 가 master 를 가리키게 된다.
    1. git branch "branchname" : branch 생성하기
    1. git checkout exp : master {\rightarrow} exp - branch 이동
    • or git checkout -b newbranch
    1. exp branch 와 master branch 에서 각각 exp.txt 와 master.txt 만들고 commit
    1. git merge exp : branch merge
    • vi editor : :wq를 이용해서 내용을 저장한다.

이 글은 커넥트 재단 Naver AI Boost Camp 교육자료를 참고했습니다.

1개의 댓글

comment-user-thumbnail
2022년 10월 18일

큰 도움이 됐습니다!

답글 달기