Git의 작업공간
Git에는 크게 4가지의 작업 공간이 존재합니다.
1. workspace
- 작업하는 일반적인 공간이며, git을 사용하기 이전의 상태입니다.
git add
명령어 이전의 변경 사항이 기록되는 장소입니다.
2. index
- 변경되는 모든 파일 및 폴더들을 추적하는 공간, Staging Area라고도 불립니다.
git add
명령어로 workspace 공간에 있는 작업물을 이 공간에 보낼수 있습니다.- git으로 관리하고자 하는 작업물을 이 공간에 올려주면 됩니다.
- 한 번
index
에 올라갔던 파일들은 git에서 계속해서 추적합니다.
3. local repository
- 최종적으로 커밋된 작업물들이 놓이게 되는 공간입니다.
git commit
명령어로 index에 있는 파일들을 이 공간으로 보낼 수 있습니다.
4. remote repository
- Git 호스팅 공간으로, 인터넷으로 연결된 별도의 공간입니다. 최종 작업물들을 여기에 저장하고 다른 사람들과 공유합니다.
- 다른 사람들과 같이 협업할 때 이 공간을 사용하게 됩니다.
git push
명령어로 local repository에 저장된 작업물을 이 공간으로 보낼 수 있습니다.git fetch
혹은git pull
명령어로 이 공간에 있는 작업물을 local repository로 가져올 수 있습니다.- GitHub, BitBucket, GitLab 등의 서비스들이 있습니다.
Git 작업공간 정리
Git은 분산 버전 관리 도구로, 작업 내용을 저장할 수 있고, 여러 사람과 협업할 때 필수적으로 쓰인다.
Git에는 workspace, index, local repository, remote repository 4가지의 공간이 존재한다.
remote repository에서 최신 업데이트된 작업 내역을 받아온다.
git add
: workspace -> indexgit commit
: index -> local repositorygit push
: local repository -> remote repositorygit pull
,git fetch
: origin repoistory -> remote repository
브랜치란?
브랜치는 사용자가 독립적으로 작업을 진행할 수 있도록 돕는 작업 흐름
- 하나의 브랜치는 독립된 Git의 4가지 작업 공간을 가지게 된다.
- 기본적으로 main 브랜치가 생성 되며, 브랜치위에서 새로운 브랜치를 생성할 수 있다.
- 브랜치를 이용하면 하나의 프로젝트에서 여러 사람이 동시에 본인의 작업을 진행 할 수 있다.
- 예를 들면, 메인 브랜치위에서 회원가입을 작업하는 브랜치를 생성하고 커밋들을 쌓아가고, 다른 개발자는 로그인 페이지를 작업하는 브랜치를 생성하고 커밋을 쌓아가고, 후에 메인 브랜치로 병합 시킨다.
브랜치를 이용한 작업 흐름
- 개발자는 메인 브랜치에서 각자 작업할 새로운 브랜치를 생성합니다
# git switch -c {새로운 브랜치 이름} {기준 브랜치} 이 명령어 포맷입니다.
# 뒤에 {기준 브랜치}는 생략 가능하며, 생략할 시 현재 브랜치를 기준으로 새로운 브랜치가 만들어집니다.
git switch -c feature-a
# 현재 브랜치에서 feature-a 라는 새로운 브랜치를 생성
- 본인이 만든 브랜치 위에서 작업합니다.
$ git add {파일} 혹은 {디렉토리}
$ git commit -m "작업 내역에 대한 내용..."
깃 호스팅 서버(GitHub 등)을 쓰지 않는 경우
- 작업 완료 후 작업한 브랜치를 메인 브랜치에 머지
- local repository의 메인 브랜치가 업데이트 되었으므로, remote repository 에도 푸시해서 최신 내역을 공유합니다.
# 합치기 위해 먼저 main 브랜치로 이동합니다.
$ git switch main
# feature-a 브랜치를 현재 브랜치(main)에 합칩니다.
$ git merge feature-a
# 업데이트된 main 브랜치를 remote repository에 푸시로 반영
$ git push origin main
깃 호스팅 서버를 사용하는 경우
- 작업 완료 후 remote repository에 작업한 브랜치를 푸시
- remote repository 에서 메인 브랜치로 Pull Request를 하고,
# git push origin {자신의 작업한 브랜치 이름}
$ git push origin feature-a
- 협업하는 다른 개발자에게 코드리뷰를 받습니다.
- 리뷰 및 합의가 된 이후에 메인 브랜치에 머지합니다.
- 이후 로컬에서 머지가 된 사항을 확인하기 위해 pull을 통해 변경사항을 가져옵니다
# git pull origin {변경 사항을 가져올 브랜치 이름}
git pull origin main
브랜치 정리
브랜치를 이용해서 하나의 프로젝트에 협업하는 사람들의 각자 독립된 작업 공간을 가질 수 있습니다.
- 브랜치 별로 Git의 4가지 작업 공간을 가지게 됩니다.
- 협업할 때는 각자 작업할 브랜치를 만들고 그 위에서 작업
- 머지할 때는 remote repository에서 각자 브랜치 작업을 리뷰받고, 메인 브랜치로 머지합니다.
더 공부하면 좋을것
merge와 rebase의 차이? - https://flyingsquirrel.medium.com/git-rebase-하는-방법-ce6816fa859d
Reference
https://www.inflearn.com/course/개발자-실무-기본기/dashboard
반응형