git - (1) 공부를 시작하며
🟣 Intro
- 최근에 github 블로그도 하면서 git을 조금씩 사용하다 보니까 그동안 내가 얼마나 원시적인 방식으로 코딩을 하고 있었나 생각이 들었다.
- 깃은 개념적으로 버전 관리(version control)이라는 낯설지만 익숙한 표현으로 거부감이 있었는데, 최근 코드를 관리하는데 편안하고 빠르게 적응을 하는 내 모습을 보면서 역시 부딪히고 사용해보는 것이 최고의 학습이라는 생각이 들었다.
- 그래도 아직 걸음마 수준인 git을 제대로 한번 공부를 해야할 것 같아서 포스팅을 결심했고 git의 주요 개념을 천천히 정리해나갈 예정이다.
🟡 왜 깃(git)?
“git” can mean anything, depending on your mood.
깃의 창시자인 리누즈 토발즈
- 유닉스 커맨드에서 사용되는 명령어 이름을 제외한 랜덤한 알파벳 3글자의 조합
- 멍청하고 단순한(이런 특성을 지닌 아무 단어로 해석되어도 좋다는 의미)
- global information tracker의 약자
- goddamn idiotic truckload of sh*t 이라는 욕설의 약자
이렇듯 git은 다양한 의미를 가고 탄생한 독특한 프로그램.
그리고 공부한 기본 개념들
🟡 git vs github
🟡 Repository
🟡 git commit
: staging area -> repository ⭐
1
2
3
git config # (1) 누가 했는지 정보 입력(config.name, config.email)
git add . # (2) 어떤 파일을 commit에 반영할지
git commit -m: # (3) 커밋 메시지 반드시 남기기
🟡 굳이 staging area가 필요해야해?
git의 기본 개념을 배우다 보면 그냥 commit을 한번에 해주면 되는데 왜 add를 굳이 넣어서 번거로운 과정을 거칠까? 의문이 든다
[📁 Working Directory(working tree)] –> [📝Staging Area (Index)]
–> [🗃️Repository]
“이 구조에서 staging area를 생략해도 되는거 아냐?” ⭐ ❌ No.
staging area가 존재함으로써 파일 하나하나를 세밀하게 선택하여 commit할 수 있게 해줌
난 거의 대부분 git add .
으로 staging을 하기 때문에 일일이 선택하지 않았기 때문에 의문이 생길 수 밖에 없었다..
🧩 Staging area는 commit 직전의 조율 공간이다 — 덕분에 Git은 강력한 버전 컨트롤 도구가 된다.
#### 🟡 git reset
- staging area에서 파일 제거.
- but, 변경된 새 모습은 그대로 working directory에 남아있음!
🟡 기본 커맨드 정리 (by codeit)
git init
: 현재 디렉토리를 Git이 관리하는 프로젝트 디렉토리(=working directory)로 설정하고 그 안에 레포지토리(.git 디렉토리) 생성git config user.name 'codeit'
: 현재 사용자의 아이디를 ‘codeit’으로 설정(커밋할 때 필요한 정보)git config user.email
‘teacher@codeit.kr’ : 현재 사용자의 이메일 주소를 ‘teacher@codeit.kr’로 설정(커밋할 때 필요한 정보)git add [파일 이름]
: 수정사항이 있는 특정 파일을 staging area에 올리기git add [디렉토리명]
: 해당 디렉토리 내에서 수정사항이 있는 모든 파일들을 staging area에 올리기git add
. : working directory 내의 수정사항이 있는 모든 파일들을 staging area에 올리기git reset [파일 이름]
: staging area에 올렸던 파일 다시 내리기git status
: Git이 현재 인식하고 있는 프로젝트 관련 내용들 출력(문제 상황이 발생했을 때 현재 상태를 파악하기 위해 활용하면 좋음)git commit -m "커밋 메시지"
: 현재 staging area에 있는 것들 커밋으로 남기기git help [커맨드 이름]
: 사용법이 궁금한 Git 커맨드의 공식 메뉴얼 내용 출력
This post is licensed under CC BY 4.0 by the author.