[git] init, add, commit, push

Dongmin Lee·2023년 1월 13일
0

git

목록 보기
1/6
post-thumbnail

💿 이 글의 목적

git의 작동 원리를 이해하기 쉽지 않았다.
git은 앞으로 매우 자주 써야하는 만큼 어떤 명령어를 써야하고 해당 커맨드를 쳤을 때 어떤 일이 벌어지는지 도식화하면서 이해해보려 한다.

💿 git command

💾 git init

터미널에서 git init을 치면 해당 경로에 .git이 숨김 파일로 생성이 된다.
이는 해당 디렉토리를 git이 추적하겠다 라는 뜻이 된다.

디렉토리에서 git init을 완료했다면 이제 git이 .git 파일을 통해 해당 디렉토리를 추적한다.
(반대로 말하면 디렉토리에서 .git을 삭제한다면 git이 추적하지 못한다.)
보다 나아가 내가 해당 디렉토리를 원격으로 관리하고 싶다면 추가 커맨드들을 입력해야한다.

init을 했다고 해당 디렉토리에 있는 모든 파일을 git이 관리하는 건 아니다. git은 디렉토리 안에 어떤 데이터들이 있는지 인지하고 있을 뿐이지 관리하기 위해선 다른 커맨드가 추가로 필요하다.

💾 git add

git add를 입력하면 staging area라는 가상의 공간으로 해당 디렉토리에서 내가 원격 저장소에 넣고 관리할 파일을 추가한다.

git add data1 data2

를 입력하면 사진처럼 data1 data2 가 스테이징 에이리어에 추가된다.

git add .

을 입력하면 해당 경로에 있는 모든 파일이 스테이징 에이리어에 추가된다.

💾 git commit

git commit을 입력하면 git add로 스테이징한 요소들을 Local Repository에 기록한다.
기록보다는 스테이징된 요소들을 더해(add) 새로운 버전을 만든다고(commit) 이해하는 게 더 편했다.

git commit -m "수정 내용"

을 입력하면 현재 버전에서 수정된 내용을 코멘트를 달아 새 버전을 만든다.

git commit

을 입력하면 vi 에디터로 여러 줄을 코멘트 달 수 있다.
(i 입력 = 입력모드 / esc 입력 = 입력모드 해제 / :wq 입력 = 나가기)

처음 세션을 들었을 때 왜 스테이징 에이리어를 따로 두는지 이해가 안됐다.
그냥 바로 저장소에 올리면 되지 않나?
하지만 스테이징 에이리어가 없다면 커밋 시 로컬 디렉토리의 모든 데이터들이 다이렉트로 깃에 기록되게 될텐데, 이러한 경우
1. 이전 커밋에 포함되어 있어 추가할 필요가 없거나,
2. 로컬 디렉토리에서는 필요하지만 깃에 저장할 필요는 없는 요소들도 새 버전에 더해질 것이다.
결론적으로 스테이징 에이리어는 커밋 전 깃에 저장하고 싶은 데이터들을 로컬 디렉토리에서 뽑아서 담아놓는 공간이다.

Local Directorygit Repository(Local)를 혼동하지 말자.
Local Directory는 단순히 내 컴퓨터에 물리적으로 존재하는 폴더일 뿐이다.
git Repository(Local)은 로컬에서 git이 관리하는 저장소다.

🤔 언제 커밋을 해야 하는가?

커밋은 자유지만 너무 자주 커밋을 하는 것도 비효율적일 것 같다.
커밋 시 수정 내용을 기록해야 하는데 계속 기록하게 되면 그에 따른 시간도 소모되고, 영양가 없는 무지성 커밋이 발생할 수도 있다. 커밋 커맨드 자체를 새 버전으로 만든다라고 이해했으니, 기록해두어야 할 정도로 특기할 변경점이 생기면 그 때 커밋해야지.

💾 git push

git push를 하면 드디어 원격 저장소에 데이터가 올라가게 된다!

git push [원격저장소 이름] [브랜치 이름]

을 통해 원격 저장소의 브랜치로 push할 수 있는데,
이 문서를 다시 찾아 볼 미래의 나를 위해 설명해주자면 님이 무지성으로 입력하는

git push origin master

이건 origin이라는 이름의 원격저장소의 master 브랜치에 push해줘! 라는 뜻이다.

💿 한줄 요약

에커푸!

💿 Reference

https://devjino.tistory.com/300
https://codingapple.com/unit/git-add-commit/?id=37473
https://iseunghan.tistory.com/322
https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%88%98%EC%A0%95%ED%95%98%EA%B3%A0-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0

profile
어제보다 성장하기

0개의 댓글