[제로베이스] GitHub 기초 개념 / Repository

Gracie·2024년 6월 8일
0

Git 이란?

git은 분산버전관리시스템(DVCS)로, 소프트웨어 개발 프로젝트에서 소스코드의 변경이력을 관리하는데 사용됨

Git의 주요 개념

1. Repository

  • 소스코드와 그 변경 이력을 저장하는 공간
  • 여러개의 Branch가 모여있는 디스크상의 물리적 공간
  • local repository / remote repository로 구분됨

    Local Repository의 구성
    Working Directory: 실제 소스파일, 생성한 파일들이 존재
    ↓Add↓
    Index(Stage): Staging area의 역할, git add한 파일 존재
    ↓Commit↓
    Head: 최종 확정본, git commit한 파일들이 존재

2. Commit

  • 파일의 현재상태를 저장하는 스냅샷으로 커밋에는 변경된 파일의 내용과 변경이력이 기록됨 (작업할 내용을 Local Repository에 저장하는 과정)
  • commit은 의미있는 변경 단위이고, 변경에 대한 설명을 commit log로 남김
  • commit단위나 commit log format을 정해놓은 회사나 팀도 있음

3. Branch

  • 독립적으로 작업을 진행할 수 있는 분기
  • main/master branch : 개발의 주 축이 되는 branch
  • 모든 branch는 최종적으로 다시 master branch에 merge되는 형식으로 진행 됨

4. Merge

  • 서로 다른 브랜치의 변경사항을 하나의 브랜치로 병합하는 작업
  • Merge되는 과정에서 Conflict이 발생하는 경우 Diff를 수정하여 Conflict를 해결한 뒤 Merge를 진행할 수 있음

5. Pull

  • 원격 repository의 변경사항을 가져와 로컬 repository에 반영하는 작업
  • Push 과정에서 Conflict이 일어나서 Push가 거절된 경우, Pull을 통해 Remote Repository의 변경내용을 Local Repository에 반영하여 Conflict를 해결한 뒤 다시 Push를 시도해야 함

6. Push

  • 로컬 repository의 변경사항을 원격 repository에 반영하는 작업
  • Push하는 순간 다른 개발자들도 영향을 받기 때문에 검증되지 않은 코드를 Push하지 않도록 함

7. Checkout

  • 특정 시점이나 Branch의 소스코드를 이동하는 것을 의미
  • Checkout 대상: Branch, Commit Tag
  • Checkout을 통해 과거 여러시점의 코드로 이동이 가능

8. Stage

  • 작업할 내용이 올라가는 임시저장 영역
  • 이 영역을 이용하여 작업한 내용 중 commit에 반영할 파일만 선별하여 commit을 수행할 수 있음

    1) working directory > 2) git에 등록하면 Stage 공간에 들어감 3) commit하게 되면 Head 영역으로 들어감

9. Tag

  • 임의의 commit 위치에 쉽게 찾아갈 수 있도록 붙여놓은 이정표

Git 환경설정

https://github.com/
위의 링크에 들어가서 git 계정을 하나 만들어야 한다.
생성한 계정으로 git 환경 세팅해보자 (git bash에서 실행 추천!)

git config --global user.name gracie-Kim
git config --global user.email eunhszww9910@gmail.com
git config --global core.autocrlf true

git config --list

아래와 같이 core.autocrlf는 true, user.name과 email이 생긴걸 볼 수 있다.

Local repository

1. Working Directory 만들기

  • working directory로 사용할 폴더 만들고, 위치 이동하기

    	mkdir test_project
    	cd test_project
    	git init

숨긴파일을 보면 git 폴더가 만들어져있는 것을 확인할 수 있다! (git으로 관리되는 Local repository가 된 것임)

2. Stage에 Add하기 (Index 추가)

  • 텍스트파일 생성 후 stage에 add
	touch text.txt
	git add text.txt

3. Head에 Commit하기 (Head 등록)

  • -m 파일에 추가할 메세지
  • 'first commit'이라는 메세지의 text.txt 파일을 commit하기
    git commit -m "first commit" text.txt

git의 상태를 출력하는 git status를 자주 사용하는 습관 들이기~
git status에서 친절하게 add하거나 commit할 파일은 없는지, modified 된 사항은 없는지 알려준다!

예시)

  • 중간에 계속 modified가 떠서 확인해보니, git_ws 하위 폴더인 test_project에 내가 추가한 txt파일이 남아 있었다...
  • git add test_project 명령어를 사용하여 변경 사항을 스테이지에 추가한 후, git commit 명령어로 커밋하거나
  • 변경사항을 버리고 싶다면 git restore test_project 명령어를 사용하여 변경사항 버리기

Local - Remote Repository 연결하기

1. token값 생성

  • GitHub에서 개인 엑세스 토큰(PAT, Personal Access Token)을 생성하여 이를 통해 remote하는 것이 권장되고 있음!
  • 과거 사용자 이름, 비밀번호를 사용하여 인증할 수 있었지만 보안상의 이유로 토큰 기반 인증을 사용하도록 변경됨 (21년 8월 이후)
  1. Git Hub에서 Settings > Developer settings > Personal access tokens > Token(classic)

  2. Generate new token > 토큰 이름 / 만료 기간 설정 / 필요한 권한(Scopes) 선택

  • Repository에 접근하기 위해서는 repo 권한 선택

📌 토큰은 생성 후 다시 확인할 수 없으므로 생성된 토큰은 안전한 곳에 꼭 저장해놓기!!!

2. Remote Repository 등록

  • origin이라는 이름으로 remote repository를 연결
git remote add origin https://<username>:<token>@github.com/gracie-kim/test_project.git

  • 현재 연결되어 있는 remote repository 확인하기

    	git remote -v

Push

local Repository의 내용을 remote Repository에 업로드해보자

  • origin: remote repository 이름
  • origin의 master branch에 local repository 파일을 add, commit 하겠다.
	git push origin master

  • git hub에 들어가보면 test.txt가 잘 올라가있는 것을 볼 수 있다

Pull

Remote Repository에 있는 데이터를 local Repository에 가져와보자

1. README 파일 생성

  • md파일은 markdown 문법을 사용함

2. 변경된 내용 pull 하기

git pull origin master
  • 폴더에 가면 파일을 불러온 것을 볼 수 있다.

git bash에서 붙여넣기:
shift + INSERT

README File
-프로젝트에 대한 설명, 사용방법, 라이센스, 설치방법 등에 대한 내용을 기술하는 파일

  • 나, 직장동료, 프로그램 사용자를 위해 존재

.gitignore

  • Git 버전 관리에서 제외할 파일목록을 지정하는 파일
  • 사용자가 원하지 않는 파일들을 자동으로 commit대상에서 제외시켜 줌

clone: Remote Repository 복제

clone remote repository를 사용하기 위한 git init, add, pull 과정을 한번에 할 수 있는 기능

  • 복제된 저장소의 이름은 기본적으로 'origin'으로 설정됨
git clone https://<username>:<token>@<git url>

ls로 조회하면 원격 리포지토리의 HelloGit 폴더를 가지고 온 것을 확인할 수 있다.

파일 정상적으로 가져왔는지 확인해보기

  • .gitignore은 숨김파일로 가져옴
profile
비전공자의 Data Analyst 도전기 🥹✨

0개의 댓글