Welcome :っ)

Devlog/Git

[Git] Git 개념과 기본적인 명령어

lazy.won 2022. 7. 5. 22:21
728x90
반응형

 

 

 

 

 

 

인프런 "모든 개발자의 실무를 위한 필수 기본기 클래스" 강의를 듣고 정리한 내용입니다. 

 

 

 

 

Git

Git은 분산 버전 관리 도구로, 작업 내역을 저장할 수 있고 여러 사람들과 협업할 때 필수적으로 사용된다. 

 

 

📁 Git의 4가지 작업 공간

Workspace 
 - git을 쓰기 이전 처음 상태로, 우리가 작업하는 일반적인 공간이며, git add 명령어 이전 변경 사항들이 기록된다. 

Index
 - 변경되는 모든 파일/폴더 추적하는 공간으로, git add 명령어로 workspace에 있는 작업을 이 공간으로 보낼 수 있다. 
 - 이 공간을 Staging Area 라고도 하며, 최종 커밋하고자 하는 작업물을 이 공간으로 둔다. 
 - 한 번 index에 올라간 파일들은 git에서 계속해서 추적한다. 

Local Repository
 - 최종 커밋 작업물이 놓이는 공간으로, git commit 명령어로 index에 있는 파일들을 이 공간으로 보낼 수 있다. 

Remote Repository
 - Git 호스팅 공간으로, 인터넷으로 연결된 별도의 공간이다. 최종 작업물을 저장하고 다른 사람들과 공유하여, 여러 사람이 함께 협업 시 이 공간을 사용한다. 
 - git push 명령어로 local repository 공간에 있는 작업물을 이 공간으로 보낼 수 있고, git fetch 나 git pull 명령어로 이 공간에 있는 작업물을 local repository로 가져올 수 있다. 
 - 대표적으로 GitHub, BitBucket, GitLab이 있다.

 

 

 

 

 

기본 동작 흐름 및 명령어

일반적인 작업 흐름은 다음과 같다.

workspace → index → local repository → remote repository

 

 

💻 기본적인 Git 명령어

  • git 초기화
$ git init

 

  • git 상태 확인
$ git status

 

  • 파일을 index 공간에 두어 파일 내용과 변경 히스토리를 추적하는 명령어 
$ git add {파일}

 

  • 파일을 최종 커밋하여 index 공간에 있는 작업물을 local repository 공간으로 이동시키는 명령어. -m 옵션 뒤에 커밋 메시지를 입력한다. 
$ git commit -m "파일 추가"

 

  • local repository에 기록된 커밋 로그들을 확인하는 명령어
$ git log

 

  • git remote repository를 등록하는 명령어
$ git remote add origin {git remote address}

# main 브랜치로 변경. -M 옵션 사용하면 기존에 동일한 이름의 branch가 있더라도 덮어쓴다.
$ git branch -M main 

# git push -u 옵션을 붙이면 앞으로, main 이라는 현재 브랜치를 자동으로 origin 이라는 원격저장소의 main 브랜치로 연결해, 간단히 git push 만 입력하여 반영하거나 git pull 을 입력할 때 origin이라는 원격저장소의 main 브랜치를 로컬 저장소의 main 브랜치로 merge 할수 있게 해주겠다는 의미이다. 
$ git push -u origin main

 

  • remote repository로부터 작업 디렉터리를 받아와, remote repository main 브랜치 작업 내역 받아오는 명령어
$ git clone {git remote address}

$ git pull origin main

 

 

 

 

작업 공간 정리

git add : workspace → index

git commit : index → local repository

git push : local repository → remote repository

git pull, fetch : origin repository → remote repository

 

 

 

 

브랜치

브랜치는 사용자가 독립적으로 작업을 진행할 수 있도록 돕는 작업 흐름이다. 

브랜치 위에서 새로운 브랜치를 생성해 독립된 작업 공간을 만들 수 있다. 그렇기 때문에 브랜치를 이용하여 하나의 프로젝트에서 여러 사람이 동시에 독립적인 본인의 작업을 진행할 수 있다.

 

 

🎈 브랜치를 이용한 작업 흐름

브랜치를 이용한 작업의 흐름은 다음과 같이 이루어진다. 

 

  1. 메인 브랜치에서 자신이 작업할 새로운 브랜치를 생성한다. 
  2. 본인이 만든 브랜치 위에서 작업한다. 
  3. git 호스팅 서버를 사용하지 않는 경우
    1. 작업 완료 후 main 브랜치에 merge 한다. 
    2. local repository의 main 브랜치가 업데이트 되었으므로, remote repository에 git push 하여 최신 내용을 업데이트한다. 
  4. git 호스팅 서버를 사용하는 경우
    1. 작업 완료 후 remote repository에 브랜치를 git push 한다. 
    2. merge 하기 전에 remote repository에서 Reviewer를 지정하여 main 브랜치로 Pull Request를 보낸다. 
    3. 협업하는 다른 개발자들에게 코드 리뷰를 받는다. 
    4. 리뷰 및 approve가 완료된 이후 main 브랜치에 해당 브랜치를 merge 한다. 

 

 

 

✨ 구체적인 흐름

실제 명령어를 사용하여 조금 더 구체적인 흐름을 이해해 보자 !

 

1. main 브랜치에서 새로운 브랜치 생성

$ git switch -c {새로운 브랜치}

# 이전 상황으로 돌아가고 싶다면 아래 명령어 사용
$ git switch -

 

2. 새로운 브랜치 위에서 일련의 작업을 완료하는 과정 중 git add와 git commit을 반복한다. 

$ git add {파일} 혹은 {디렉토리}
$ git commit -m "작업 내역에 대한 내용..."
 
3-1. 혼자 작업하여 바로 변경사항을 업로드하는 경우, 브랜치에서 작업한 내용을 main 브랜치에 합친다. 
# 합치기 위해 먼저 main 브랜치로 이동한다.
$ git switch main 

# 브랜치를 현재 브랜치(main)에 합친다.
$ git merge {브랜치}
 
3-2. 업데이트 된 main 브랜치를 remote repository에 git push하여 반영한다. 
$ git push origin main

 

4-1. 동료들의 코드 리뷰를 받기 위해 Pull Request를 받은 후 업로드하는 경우, 자신이 만든 브랜치 이름과 동일한 원격 브랜치에 git push 한다. 그렇게 하면, GitHub에 미리 만들어둔 remote repository의 새로운 브랜치가 생기고, 그 브랜치에 작업한 내용이 올라가게 된다. 

$ git push origin {자신의 작업한 브랜치 이름}

 

4-2. GitHub에서 main 브랜치로의 PR을 생성함으로써 다른 개발자들에게 작업 내역을 공유하고, main 브랜치로의 merge 요청을 하게 된다. 

 

4-3. 리뷰를 거쳐 PR이 승인되고, 작업 내역이 main 브랜치에 merge되면 작업은 끝이 난다. 작업 완료된 브랜치는 깔끔한 정리를 위해 보통 삭제해 준다. 

 

 

 

 

 

 

 

 

320x100
반응형

'Devlog > Git' 카테고리의 다른 글

[Git] 좋은 Commit 메시지 작성하기  (0) 2022.09.06
[Git] 상황별 Git과 충돌(Conflict) 다루기  (0) 2022.07.05