[Git] 기본 용어, Local Repository, Remote Repository, Branch

박미영·2023년 5월 1일
0

📌Git 기본 용어

📍 Repository

  • 프로젝트 단위의 여러 소스코드들이 모여있는 공간으로 생각하면 된다. (폴더랑은 조금 다름)
  • 소스코드가 저장되어 있는 여러 개의 Branch 가 모여있는 디스크상의 물리적 공간
  • Local Repository 와 Remote Repository 로 구분



📍 Checkout

  • 특정 시점이나 Branch의 소스코드로 이동하는 것을 의미
  • Checkout 대상: Branch, Commit, Tag
  • 버전 관리를 여러 Branch로 나누어서 할 수 있다.
  • 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 를 진행 할 수 있음





📌Local Repository

현재 내가 실제로 사용하고 있는 컴퓨터에서 하는 작업
Local Repository 는 Git 이 관리하는 3가지 단계로 구성되어 있음

  • Working Directory(작업공간): 실제 소스 파일, 생성한 파일들이 존재
  • Index(Stage): Staging area (준비영역) 의 역할, git add 한 파일들이 존재
  • HEAD: 최종 확정본, git commit 한 파일들이 존재



- Local Repository 생성

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

  • init 한 번 실행한 후라 이미 존재한다고 나옴 (master가 나오면 git이 관리 중)



  • .git 확인
    .git 폴더가 생성된 것을 확인 → .git 으로 이동해서 파일을 살펴보면 Git 관련 파일들이 생성된 것을 확인
# 숨긴 파일 모두 확인
ls -all




  • 파일 생성
    Working Directory 에 파일을 생성
    참고> touch 명령어 - 빈 파일을 생성
est_project % touch test.txt 
test_project % ls 
test.txt




  • Git Status
    Git 에 존재하는 파일 확인
git status



  • Git Add
    Working Directory 에서 변경된 파일을 Index (stage)에 추가
git add <filename>




  • Git Commit
    Index (stage) 에 추가된 변경사항을 HEAD 에 반영 (확정)
git commit -m "commit 에 대한 설명" <filename>



모든 작업이 완료된 상태이다.





📌Remote Repository

- Remote Repository 생성

github









- Remote Repository 등록

Local Repository 에 연동할 Remote Repository 를 등록 (Token 사용)

- Remote Repository 등록 with Username and Token

git remote add origin https://<username>:<token>@github.com/<repository>.git

ex)



- Remote Repository 정보 확인

git remote -v



- Push

Local Repository (HEAD)에 반영된 변경내용을 Remote Repository에도 반영하기 위해서는 Git Push 를 사용


Git Push

git push origin <branchname>


master가 사용안되고 error뜨면 main 으로 작성해주면 된다.



- Pull

Remote Repository의 내용에 맞춰 Local Repository를 갱신하려면 Git Pull 사용

<Remote Repository에 README.md 생성 후 pull 하기>



Remote Repository의 파일이 Local Repository에 생성된 것을 볼 수 있다.





- Default Branch


  • 변경하는 방법








- Remote Repository 복제

Local Repository 를 생성하지 않은 상태에서 Git Clone 명령을 사용하여 Remote Repository 를 Local 에 복제할 수 있음



Git Clone

앞서 폴더를 만들고

  • Git Init 으로 해당 폴더를 초기화 하고
  • Remote Repository 를 등록하고
  • Remote Repository 의 내용을 Pull 하는 모든 과정을 Git Clone 으로 할수 있음
git clone https://github.com/<repository>.git

Git Clone with username and token

git clone https://<username>:<token>@github.com/<repository>.git



잘 들어갔음을 확인 할 수 있다.





- Branch

git branch



- Branch 조회

  • Local Branch 조회
HelloGit % git branch 
* main



  • Remote Branch 조회
git branch -r

ex)

HelloGit % git branch -r
 remotes/origin/HEAD -> origin/main
 remotes/origin/main



  • Local + Remote 조회
git branch -a

ex)

HelloGit % git branch -a
* main
 remotes/origin/HEAD -> origin/main
 remotes/origin/main




- Branch 생성

  • Local Branch 생성
git branch <branchname>

ex)

HelloGit % git branch branch01
HelloGit % git branch 
 branch01
* main

  • 확인




- Branch 이동

git checkout <branchname>

master -> branch01로 변경 된 것을 볼 수 있다.



- Branch 생성 + 이동

git checkout -b <branchname>

brachname으로 된 branch가 없다면 생성 후 이동하는 코드



branch02가 없으면 생성 후 이동하라는 코드이기때문에 새로 생성된 모습을 볼 수 있다.



  • remote Branch 생성(local 생성 후 push)






- Branch 삭제

  • Local Repository Branch 삭제
git branch -d <branchname>


활성화 되어있는 상태에서 삭제하면 error 발생한다. 다른 branch로 이동 후 삭제



local에서는 master만 남았고 remote에는 branch01-02가 남아있음을 볼 수 있다.



  • Remote Repository Branch 삭제
git push origin --delete <branchname>





📌실습1

  1. Local Repository 생성하기
  • 위치 : git_ws 폴더 하위
  • 이름 : exam_project



  1. 파일 생성 후 Git 으로 관리 시작하기
  • 파일 : exam.txt (touch <파일>)

  • Git으로 관리 시작 (git init)

  • Index 추가 : git add 의미

💡항상 git status 확인 하는 작업을 습관되게 하도록!!!

  • HEAD 등록 : git commit 의미



  1. Remote Repository 생성 하기
  • 이름 : exam_project
  • 빈 프로젝트



  1. Remote Repository 등록 하기
  • exam_project 의 Local Repository에 앞서 생성한 remote repository 등록 후 확인
  • token 은 앞서 수업에서 생성한 token 계속 사용



  1. Local Repository 변경내용을 Remote Repository에 반영하기
  • commit 항목을 Remote Repository 에 반영(push)

  • Remote Repository 에서 exam.txt 확인



  1. Remote Repository 변경 내용을 Local Repository에 반영하기
  • exam.txt 파일 수정 : This is git exam.


확인 - 변경되기 전

변경 후




"이 글은 제로베이스 데이터 취업 스쿨 강의를 듣고 작성한 내용으로 제로베이스 데이터 취업 스쿨 강의 자료 일부를 발췌한 내용이 포함되어 있습니다."

0개의 댓글