GIT 로컬 저장소와 원격 저장소

도도묵·2023년 1월 14일
0

GIT

목록 보기
1/2
📌 최근 보안이 철저한 운영 사이트를 들어가게 되면서 사용 가능한 툴이 제한되었고, 사용 중인 ide에 내장된 git gui가 따로 없어 커맨드로 개발한 소스들을 직접 배포 및 빌드하게 되는 상황에 직면했어요. 운영계와 개발계 그리고 내 로컬 브랜치를 오가며 버전 관리를 할 수 있는 git에 대한 지식이 어느 정도 요구되었고, 항상 인텔리제이에서 제공해주던 내장된 git 관리 툴만 쓰던 저는 꽤나 오랜 시간 헤맬수 밖에 없었답니다… 😂😂😂😂😂

  때문에 이 글은 저와는 비교가 안되는 연차를 가진 분들 사이에서 이 악 물고 배운 제 생존 일지이자 회고이며, 협업하는 분들이 좀 더 나은 시작을 할 수 있지 않을까 하는 바램에서 시작되어 쓰게 된 글이에요. 갑자기 직접 git을 써야하는 환경 처해졌을때 살아남기 위해 필요한 최소 능력들에 대해서만 설명할게요.
 짧지만 굵직한 내용으로 훗날 여러분들이 당황하지 않고 잘 해쳐나가는데 도움이 되었으면 해요🥺🥺🥺.


📌 GIT 저장소

git은 2개의 저장소를 가지고 있어요

여러 사람과 함께 공유 할 수 있는 원격(remote) 저장소
내 PC 저장해 사용하는 로컬(local) 저장소

   로컬 저장소를 통해 내 PC에서 내가 맡은 요건들을 개발하고, 내가 만든 자랑스러운 소스들을 원격 저장소에 올리면 다른 PC에서도 해당 소스들을 각자의 저장소에 옮겨 기존 작업된 소스들과 함께 갖고 있거나 합쳐 원격 저장소에 다시 올릴 수 있어요.
  로컬에서는 내가 실수를 하던말던 괜찮아요. 그러나 원격 저장소에 올릴 경우 여러 개발자와 같은 브랜치를 공유 할 수 있기 때문에 혼선이 생길 수 있어 주의해야해요.
  자 그럼 이번에는 로컬에서부터 원격의 repository까지 내 소스들이 어떻게 올려지는지 알아볼까요?




📌 로컬 저장소

로컬 저장소는 총 3가지의 영역으로 구성되어 있어요.

현재 작업 중인 파일들이 모여 있는 Working Directory
커밋하기 전 커밋할 파일들이 있는 Staging Area
커밋 후 unmodified 상태의 파일들이 모인 Git directory

위 3가지의 영역들은 우리가 개발 한 이 소스들을 원격 저장소에 올릴때 반드시 거치게 돼요.

클론을 통해 원격 저장소로 부터 가져온 나의 폴더 및 파일들은 working directory에 담기게 되고, 하나의 작업 단위가 끝나게 되면 내가 올리고 싶은 파일들을 마트에서 장바구니에 물건 담듯 담게되요.
장바구니는 staging area, 담는 물건들을 소스 파일들이라 생각했을때, 소스 파일들을 staging area에 담기 위해 사용하는 명령어가 바로 git add에요.

특정 파일을 담고 싶을 경우

git add <파일 경로>

내가 작업한 모든 파일들을 담고 싶은 경우

git add .

이렇게 untracked 또는 modified 상태에 있는 파일들이 staging area에 올라가게되면 staged 상태로 변경되게 되고 repository로 갈 준비를 마치게 돼요.

🌟Git LifeCycle이 궁금하다면?

자 이제 물건들을 다 골랐으면 카운터에서 계산하고 영수증을 받겠죠?
영수증이 내가 이 물건들을 샀다라는 증거가 되는 것처럼 우리도 commit을 통해 staged area에 있던 파일들을 repository에 올린 증거를 남기게 돼요. 이때 사용하는 명령어가 git commit 이에요.

git commit -m "커밋 내용"

-m 옵션을 통해 해당 commit에 대한 내용을 작성 할 수 있게되고 기록할 커밋의 내용까지 뒤에 함께 적어주면 해당 파일들은 git directory에 저장되어 원격 저장소로 가기 전 준비를 마치게 돼요.




📌 원격 저장소

이제 local repository의 commit 내역들을 원격 저장소에 반영해요.

git push

를 하게되면 변경 사항들이 원격 저장소 (remote)에 반영되요.
push 하기 전 fetch 또는 pull을 통해 현재 있는 local branch가 최신화 되어 있는지 반드시 확인하고, 그 외 master와 싱크를 맞추거나 rebase로 인해 강제로 push해야 되는 상황에 대해서는 다른 글을 통해 추가적으로 더 설명할게요.

profile
나만의 성장 일기

0개의 댓글