영주의 개발노트

Mac Terminal Theme 변경 & Git 기초 본문

TIL/Git

Mac Terminal Theme 변경 & Git 기초

0JUUU 2022. 1. 12. 15:54

들어가기 앞서, 필자는 맥을 처음 사용하여 맥북에 익숙치않음을 알립니다....⚠️
신입 개발자 교육을 받으며 공부한 내용들을 두서없이 정리하는 글입니다.

 

일자 주제 및 내용 시수
Day 1 - Shell command, Vim command
- Bitbucket 가입 및 GIt 설치, 기본 명령어
- 프로젝트를 시작하는 법(1): git init / git remote
- 프로젝트를 시작하는 법(2): git clone
3 H

Goal

  • git을 사용하기 위해 CLI Shell command와 Vim editor를 다룰 수 있다. ❌
  • 코드 관리를 위한 git의 정확한 사용법을 이해한다.
  • git의 저장소 개념을 이해하고, 원격 저장소 서비스의 차이를 인식한다.
  • git을 사용하면서 발생하는 다양한 상황을 해결할 수 있다.
  • commit의 보편적인 작성법을 이해하고 이를 활용하여 commit을 작성할 수 있다.
  • git의 branch model을 활용해 능숙하게 코드관리할 수 있다. ❌
  • git의 다양한 branch 전략을 이해하고 널리 사용되는 git flow 전략을 활용하여 프로젝트를 수행할 수 있다. ❌
  • jira와 bitbucket으로 프로젝트를 관리할 수 있다. ❌
  • git으로 타인과 협업하며, 다른 프로젝트에 기여할 수 있다.

Before Start

MacOS로 개발할 때 꼭 필요한 도구 & 설정

  1. iTerm : 기본 터미널의 대체재
  2. OhMyZsh : zsh Customize
     # spaceship 사용 & Oceanic-Next 사용
     ZSH_THEME="spaceship"
    What is zsh ❓
    터미널 shell 환경의 사용성을 개선한 것 (zsh를 더욱 편리하게 해주는 것인 oh-my-zsh)
    가볍고 빠르지만 예쁘지는 않은... ! bash 쉘의 기능을 포함하여 편리한 기능이 추가된 Shell 환경
  3. Homebrew
  • vim colorscheme 설정 (링크🔗: 해당 테마 사용)

Recap -Zsh Shell Command

/ : 디스크의 최상단 디렉토리
~ : 최상단 디렉토리 (~인 상태에서 pwd로 어디인지 확인 가능)
- : 옵션을 의미 (e.g. ls -a / ls -al / ...)
# ls : list segement
ls -a         # 숨김 파일 모두 포함한 모든 파일
ls -l         # 상세 정보
ls -al        # 숨김파일까지 모~두 상세한 정보까지 다 

# mv : 이동 & 이름변경도 가능
# mv 파일명 경로
mv readme.md bin/
# mv 파일명 새로운파일명
mv README.md ./README.txt        # ./ 뺴도 같은 디렉토리 내에 README.txt 파일로 변경

# cp : 복사 & 이동하면서 이름변경 가능
# cp 파일명 경로
cp readme.md bin/
# cp 파일명 경로/새로운파일명
cp readme.md bin/readme.txt

# 파일 생성
touch readme.md
# cat : 파일 열기
# vi : 파일 편집 (=> python, node 등 열고 싶은 언어로 열 수 있음?)
# vimium => vim 명령어 연습 가능!

# 파일 지우기
rm readme.txt
# 모든 파일 지우기 
# 1. 연달아 파일명 적기
# 2. 
rm ./*
# 특정 파일 지우기
# 특정한 파일확장자
rm *.md
# 특정한 파일명
rm test.*

# !! 디렉토리
# rm으로는 지워지지 않음! 왜? 파일들이 경로를 잃게 되므로!
rm -r 경로
rm -rf 경로    # 강제로 지우는 것이므로 조심!
rm -ri 경로    $ 경로 안에 있는 파일 하나하나 확인하며 삭제
# rmdir vs rm
# rmdir : 비어있는 디렉토리만 삭제
# rm : 비어있지 않은 디렉토리여도 삭제

# 파일 숨김처리
mv live.md .live.md
# 숨김 해제
mv .live.md live.md

Q1. 다음 절차를 수행하여 최종 디렉토리와 파일 구조를 완성하세요.

  • cli-practice/ 디렉토리 생성
  • 생성된 디렉토리에 README.md 파일 생성
  • bin/ 디렉토리를 생성하여 README.txt 를 복사하여 introduce.md 로 이름 변경
    mkdir cli-practice/
    cd cli-practice/
    touch README.md
    mkdir bin
    cp README.md bin/introduce.md

Recap - Vim command

  • normal mode: ESC
    h j k l : left / down / up / right
    i : insert mode
    v : visual mode
    d : delete
    dd : delete a line
    yy : 커서가 있는 라인 전체 선택 & 복사
    p : 붙여넣기
    u : 취소
    a : 커서 뒤에 삽입
    A : 커서가 있는 라인 맨 뒤에 삽입

Git

git




Linux Kernal을 만들기 위해 Subversion을 쓰다 화가 난 리눅스 토발즈는 2주만에 git이라는 버전관리 시스템을 만듦

리눅스도 만들고, git도 만들고 ;;; 자기 혼자 다 해먹네.... 멋진 사람...

Git의 특징

  1. 빠른 속도, 단순한 구조
  2. 분산형 저장소 지원
  3. 비선형적 개발 (수천개의 브랜치 생성 가능) 가능

Git의 장점

  1. 소스코드 주고받을 필요 없이 동시 작업이 가능해짐 ➡️ 생산성 증가
  2. 수정내용은 commit 단위로 관리, 배포 뿐만 아니라 원하는 시점으로 Checkout 가능
  3. 새로운 기능 추가는 Branch로 개발하여 편안한 실험이 가능 & 성공적으로 개발 완료 ➡️ Merge 하여 반영
  4. 인터넷 연결이 되어 있지 않아도 개발 가능!

git objects

  • Blob : 파일 하나의 내용에 대한 정보
  • Tree : Blob이나 subtree의 메타데이터 (디렉토리 위치, 속성, 이름, ...)
  • Commit : 커밋 순간의 스냅샷
    git objects

git Process Flow and Command

git process



  • Local : 로컬에서 git init으로 레포를 만들면 remote repo가 없다! ➡️ local과 remote를 연결할 작업 필수❗️
    git remote add origin 주소        # origin : 별명
    git remote / git remote -v         # 확인
    git remote remove 별명            # 지우기
  • git init으로 local에서 repo를 만들고 첫 push ❗️
    ➡️ git push -u origin master/main/... : -u (upstream set) 옵션 = local & remote에 쓰고있는 master/main/...은 같다! 라고 명시하는 역할

Commit

  • git commit
    : git commit -m "" ➡️ 얘를 사용하지 말자❗️

Conventional Commits

  1. commit의 제목은 commit을 설명하는 하나의 구나 절로 완성
  2. 내용의 시작 => 대문자
  3. prefix 꼭❗️ 달기
    • feat: 기능 개발 관련
    • fix: 오류 개선 혹은 버그 패치
    • docs: 문서화 작업
    • test: test 관련
    • conf: 환경설정 관련
    • build: 빌드 관련
    • ci : Continuous Integration 관련
    commit 할 때 기억해야 할 것 ❗️❗️
    • commit은 동작 가능한 최소단위로 자주 할 것.
    • 해당 작업단위에 수행된 모든 파일 변화가 해당 commit에 포함되어야 함.
    • 모두가 이해할 수 있는 log를 작성할 것
    • Open Source Contribution 시 영어가 강제되지만, 그렇지 않을 경우 팀 내 사용 언어를 따라 쓸 것.
    • 제목은 축약하여 쓰되 (50자 이내), 내용은 문장형으로 작성하여 추가설명 할 것.
    • 제목과 내용은 한 줄 띄워 분리할 것.
    • 내용은 이 commit의 구성과 의도를 충실히 작성할 것.