[git] git에 대한 궁금증 해결, 기초 명령어 숙지

이민선(Jasmine)·2023년 3월 9일
0
post-thumbnail

오늘은 코드스테이츠에서 깃 기초 개념과 명령어들을 배우는 시간!

이전에도 습관적 commit을 하면서 git이랑 조금이나마 친해져왔지만, 여전히 잘 모르고 지나쳤던 부분이 많았던 것 같다. 가끔 내 의도와 다르게 움직이면 식은 땀 나는 것은 덤! ໒(◉ᴥ◉;;;;)७

특히 staging area라는 개념이 추상적이고 왜 존재하는지 이해가 잘 안갔었는데 이번 시간을 통해 staging area의 존재 이유에 대해 공부할 수 있었다. 그리고 지금까지 보이는 대로 복붙하는 데에 그쳤던 git 명령어들이 무슨 의미를 가지고 있는지 조금이나마 보이기 시작했다.

특히 git에 대해 궁금했던 것들 중 2가지를 이번 기회에 정리를 해보았다.

궁금한 것 1 : 어디가 local repository이고 어디가 remote repository인가?

local repository : 나의 개인 저장소
remote repository : 원격 온라인 저장소

오케이 local은 개인 저장소고 remote는 원격 저장소이다.
그런데 아직 와닿지가 않는다.

HTML로 직접 호다닥 만들어본 local repo와 remote repo 사진ㅋㅋㅋㅋㅋㅋ
내가 열심히 작업한 코드를 staging area로 올린 다음 commit을 하면 local 저장소에 저장되고, 원격 저장소에 해당 내용을 반영하기 위해서는 commit을 push하는 것이다.

즉, git commit은 local 저장소에 변경 사항을 기록하는 용도이고, git push는 원격 저장소와 상호작용하여 원격 참조를 업데이트하는 작업이다.

그런데 이렇게 말로 설명하니까 처음에는 크게 와닿지가 않았다.

내가 vs code를 썼을 때 언제 개인저장소라는 곳에 내 코드들을 올렸던 거지?

vs code에서 직접 commit을 해보면서 각 단계가 어느 단계에 해당하는 시각적으로 확인해보았다. 이를 위해 코드스테이츠 아고라스테이츠 만들기 프로젝트에서 주석을 수정해보았다.


① +를 누르면 staging area로 이동한다.


② staging area로 이동시킨 뒤 commit message 작성 + commit을 누르면 local repository로 이동한다.


③ origin(원격저장소 이름) main(브랜치명)으로 local repository에 있던 commit들을 push하는 것이다.


OK!! PUSH하거라!

vs code를 직접 켜서 보니 이제 좀 각 단계가 어느 부분에 해당하는지 이해가 된다!

그런데 여전히 궁금했던 것 한 개 더.

궁금한 것 2 : staging area는 왜 굳이 존재할까?

바로 commit해서 local repo에 올려버리는 게 더 편하지 않을까?
그 이유는 수정한 파일이라고 다 저장하고 싶은 파일이 되지는 않기 때문이다!!

만약 파일 2개를 수정했지만, 막상 저장소에 반영하고 싶은 파일은 1개라면? 그럼 반영하고 싶은 파일은 commit하면 되지만, 반영하고 싶지 않은 파일은 staging area에서 commit하지 않고 수정사항을 간단히 discard(폐기)할 수 있는 것이다.
변경한 파일 중 저장소에 반영할 파일을 선택하는 작업이 바로 '인덱스에 등록' 또는 '스테이징(staging)'이다.

이제 좀 머릿속에 정리가 되는군!!
git 명령어도 항상 쓰던 것만 쓰게 되는 것 같아서 유용한 기초 명령어들을 마지막으로 다시 짚고 넘어가기로 했다.

git 기초 명령어

1. 그냥 파일 → work space

git init

작업 공간에 local git 레포 생성

2. work space → staging area

커밋하기 전에 staging area를 확인하는 것이 좋다.

git add <파일명>
// untracked files를 staging area로 추가해서 git 관리 하에 둠.
git status
// staging area로 잘 옮겨졌는지 확인
git rm --cached <파일명>
// 파일 unstage
git restore <파일명>
// 변경사항 폐기

3. staging area → local repository

git commit -m "커밋 메시지"
// local 레포로 커밋!

4. local repository → remote repository

git remote 명령어는 원격 레포지토리를 다루기 위한 git 명령어이다.

git remote add <원격레포명 ex.origin> <원격레포URL>
// 로컬 레포에 원격 레포 주소 등록
git push <원격레포명 ex.origin> <브랜치명 ex.main>
// 원격 레포에 저장사항 반영

이제서야 내가 사용하고 있는 git의 구조가 명확해졌다. 하지만.. 아직 git에 대해 배울 것들은 많이 남아있는 거 알지 쟤스민?

협업할 때 필요한 git work flow도 차차 알아가는 걸루~! 파이링~!

참고:
깃 입문 사이트
https://backlog.com/git-tutorial/kr/intro/intro1_1.html

profile
기록에 진심인 개발자 🌿

0개의 댓글