## 220328 Day01 Today I Learned
- shell
- vim
- git
- commit
Shell
- 운영체제에서 커널과 사용자 사이에서 사용자의 명령을 해석하고 처리 결과를 나타내주는 프로그램.
- 명령 줄 쉘(CLI), 그래픽 쉘(GUI)로 구분한다.
- 다양한 운영체제에서 bash가 기본 쉘로 채택되었다.
Shell Command
- ~ : 로그인한 사용자의 상위 폴더
- $ : 명령어를 입력받을 준비가 완료되었다는 의미
- ls : 사용가능 디렉토리 목록 확인
- cd : change directory, 디렉토리 변경
- mkdir : make directory, 디렉토리 생성
- .. : 상위 폴더
- . : 현재 폴더
- - :
- touch : 텍스트 기반의 새로운 파일을 만들 때 사용, 특정 프로그램을 거쳐 여는 파일(.exe, .pptx 등)은 불가.
- mv 대상파일 위치 : 대상파일을 위치로 이동
- rm 대상파일 : 대상파일을 삭제(빈 디렉토리 일 때)
- vim : Git에서 txt수정이 필요한 모든 순간에 사용(텍스트 편집기)
Vim Command
- i : insert mode, 편집이 가능하다.
- esc : normal mode, 편집이 불가능하다.
- :q : 종료
- :q! : 수정을 삭제하고 종료
- :w : 저장
- :wq : 저장하고 종료
- :{number} : {number}번 째 문장으로 이동
Git
- 리누스 토발즈가 만든 버전관리 시스템(VCS, Version Control System)
- 빠른속도, 단순한 구조
- 분산형 저장소 지원
- 비선형적 개발(수천개의 브랜치) 가능
- git ≠ github, git은 vsc(일종의 tool) git을 cloud(원격저장서비스)하는 것이 github
Pros of Git
- 소스코드 주고받을 필요 없이 동시작업 가능 -> 생산성이 증가
- commit 단위로 수정내용 관리, 원하는 시점으로 Checkout 가능
- Branch로 개발하여 실험 가능, 성공시 Merge하여 반영
- 인터넷이 연결되지 않아도 개발 가능
Git Object
- Blob : 파일 하나의 내용에 대한 정보
- Tree : Blob의 메타데이터(디렉토리 위치, 속성, 이름 등)
- Commit : 커밋 순간의 스냅샷 (Blob + Tree)
Git Process
Git Configuration ( terminal이나 Bash에서 설정)
- $ git config --global user.name "{github username}"
- $ git config --global user.email "{github email address}"
- $ git config --global core.editor "vim"
- $ git config --global core.pager "cat"
Commit Convention
- 커밋 제목은 50자 이내로 요약하여 작성
- 제목과 내용 사이 한 칸 엔터
- prefix를 사용하여 한 눈에 커밋의 용도를 알기 쉽게 함
feat : features
docs : documentations
conf : configurations
test : test
fix : bug-fix
refactor : refactoring
ci : Continuous Integration
build : Build
perf : Performance