[3주차 Day 2] 참고: Git

pengu·2021년 5월 4일
0

KDT 배움기록

목록 보기
12/12
post-thumbnail

노션 기록

Git?

Git이란?

분산 버전관리 시스템!

여러 사람이 한 번에 코드를 관리하려면 어떻게 해야 할까?

→ 코드를 분산해서, 버전을 나눠 관리할 필요가 있다!

Git의 전체 구조

Git은 저장소(Repository)별로 관리됨!

  • Repository : 저장소

중앙에 원격 저장소를 두고 이를 바탕으로 로컬 저장소를 여러 개 둠

  • 로컬 저장소
    • 실제 우리가 작업할 공간
    • Git이 관리
  • 원격 저장소
    • (진짜_진짜_최종)인 애들 저장되는 곳
    • Github가 관리



Git 시작하기

Git도 소프트웨어의 일종이기 때문에 설치가 필요하다!

운영체제에 맞게 설치 (설치링크 : https://git-scm.com/book/ko/v2/시작하기-Git-설치 )



Git 저장소에서 파일의 상태

Git은 commit 단위로 진행됨

유저의 모든 작업사항을 저장하기엔 효율이 떨어지게 됨!

commit은 스냅샷 같은 것으로, 유저가 임의로 지금 저장해줘! 라고 하는 것을 commit한다 라고 생각하면 됨

로컬 저장소는 크게 3가지로 나뉨, 각 단계는 commit을 위한 진행단계로 보면 됨

  • Working Directory

    • Unstaged 라고도부름
    • commit에 반영하지 않는 파일들이 여기에 해당됨
    • 이 들 중에 commit에 추가할 사항만 골라서 git add 명령어를 통해 Staging Area로 넘겨줌
  • Staging Area

    • Staged 상태의 코드, 파일들이 있는 곳
    • git add 로 추가된 것들을 git commit 명령어를 통해 스냅샷을 찍어 다음 commit으로 넘긴다
  • Repository

    • committed 상태의 코드, 파일들이 있는 곳
    • commit 단위로 버전이 관리됨



Git의 Branch

Git의 분산 기능을 수행!

Git의 Branch란?

코드의 흐름을 분산 - 가지치기!

코드를 짤 때, 버그나 새로운 기능 추가 등 이슈가 생길 수 있음

이 때 해당 코드를 가지치기에서 독립적인 공간에서 해당 이슈를 처리하고 main 코드는 계속 개발해 나가도록 관리할 수 있음

이후 나중에는 가지치기한 코드를 합쳐 최신 코드를 생성!



Git과 Github


Github란?

가장 대중적인 원격저장소 https://github.com

Git의 로컬저장소(혼자 개발할 때)에서 할 수 있는 일들을 다뤘으니 다른사람과의 협업을 해보자!

github에서 repository를 생성 → 원격 저장소 설명



Git 명령어

  • 로컬 저장소 생성
    • 현재 작업 중인 디렉토리를 git 저장소로 지정
    git init

  • 현재 Git 저장소의 상태 확인
    git status

  • 커밋에 반영할 파일 지정 git add <추가할 파일>
    • example.py를 생성(혹은 수정)하고, 이를 commit에 반영하고 싶은 경우
    • unstaged 상태의 파일을 staged 상태로 바꾸는 과정
    • example.py를 다음 commit에 넣겠다고 선언한 것임!
    git add example.py

  • Git 로컬저장소에 commit 남기기 git commit -m <커밋 메시지>
    • 변경사항이 반영된 New Commit 생성
    git commit -m "add example.py"

  • Commit 기록 확인
    • 그동안의 로그를 확인할 수 있음
    git log

  • Branch 생성 git branch <브랜치 이름>
    • Git에는 기본적인 branch가 하나 존재함 → master branch
    • master로부터 develop branch를 새로 생성
    git branch develop

  • Branch 확인
    git branch -v

  • Branch 전환 git checkout <브랜치 이름>
    • 현재 작업 중인 branch를 전환
    git checkout develop

  • Branch 병합 git merge <브랜치 이름>
    • 현재 작업중인 branch를 원하는 branch에 병합
    • 현재 branch에 지정한 branch 가 남긴 commit들을 적용(fast-forward 방식)
    git merge develop

  • Branch 삭제 git branch -d <브랜치 이름>
    • 지정한 branch 삭제
    git branch -d develop

  • 원격저장소 등록 git remote add <별칭> <원격저장소 주소>
    git remote add orgin github원격저장소링크

  • 원격저장소 확인
    git remote -v

  • 원격저장소에 로컬저장소 내용 전달 git push <remote_repo_name> <branch_name>
    • 원격 저장소에 로컬저장소의 어떤 브랜치를 전달할건지 선택하여 push
    • github의 경우 master 브랜치를 main으로 쓰기 때문에 master 브랜치 이름을 main으로 변경해줘야 함
    git push origin main

  • 브랜치 이름 변경 git branch -M <변경할 이름>
    • 현재 branch 이름을 main으로 변경
    git branch -M main

  • 원격저장소에서 로컬 저장소로 가져오기
    git clone <원격저장소 주소> <해당 원격저장소 파일을 담을 폴더 이름, default 값: 해당 원격저장소 이름>
    git clone github 원격저장소주소 programmers

  • Github 과제 제출 방법

    1. 과제가 있는 원격 저장소를 자신의 원격 저장소로 Fork한다
      • Fork : 해당 원격 저장소를 나의 원격 저장소로 복사(가져오기)
    2. 자신의 로컬 저장소에서 브랜치를 만들어 작업을 진행하고 Push한다
    3. 자신의 원격 저장소에서 과제 저장소로 Pull Request 한다
profile
꾸준하게

0개의 댓글