[엘리스(elice) 레이서 1기 ] 02주차/DAY6 - Git 기초

Jung Wish·2020년 12월 30일
0

엘리스 레이서 1기 교육 - Git 기초

Git - 버전 관리를 위한 분산 저장 시스템

  • 각 Commit을 통해 저장된 버전은 모두 각각의 SnapShot을 가지고 있다.
  • Git은 GUI 버전과 CLI 버전이 있다.

CLI 사용을 위한 ⭐️ Real 기본 리눅스 명령어 정리 ⭐️

cd "/directory_path" # change directory
pwd # print working directory
ls # list
ls -l # list one file per line.  Avoid '\n' with -q or -b
ls -l -a # -a, --all do not ignore entries starting with .
touch text.txt # make new file
mkdir "디렉토리 명칭" # make directory

Git 사용을 위한 ⭐️ Real 기본 Git 기초 명령어 정리 ⭐️

git init # create .git file -> initialize
git status # git 상태 확인

# git의 config 추가 또는 변경
# --global 옵션을 붙일 경우 local 환경 전체에 적용된다.
git config --global user.email "email"
git config --global user.name "name"

# git 하위 폴더에 변경사항이 있는 경우
git add "git의 버전으로 관리할 파일 추가" # staged 상태로 추가
git commit -m "커밋에 들어갈 메세지" # 현재 버전을 local git repo 저장소에 저장
git log [--oneline] # git에 commited 된 버전 로그 기록 확인 -> 정확하게는 HEAD까지의 commit을 표기한다.

# git remote(원격 저장소)가 설정이 되어 있지 않은 경우
git remote origin "git-remote-url"

# git remote에 현재 변경된 버전 업데이트
# origin(나의 github 원격 저장소), master(브랜치 명칭)
git push origin master

git에서 기억해야 할 원리

  • master : last commit을 가리키는 branch이다.
  • HEAD : Working directory의 current version을 가리키는 Snapshot.

  • git checkout을 통해 HEAD 이 가리키는 내용을 바꿀 수 있다.
    • checkout은 어원 그대로 대출과 같은 의미로 git repository에 있는 기존 버전 내용을 가져와 현재 버전(HEAD)으로 설정하는 명령어이다.
    • 단, master를 가리키던 내용을 임의로 바꾼것이기 때문에 detached 상태가 되므로, 최신 상태로 돌아오기 위해서는 git checkout master 명령어를 이용하는 것이 좋다.
    • 보통은 detached의 위험성때문에 checkout은 잘 쓰지 않고 실험적인 작업을 시도할때만 사용한다.
      ➡️ 하지만 git은 immutable(불변성)인 특성 때문에 어떠한 버전도 삭제하지 않으므로 기존 (reflog를 통해 알 수 있는)commit id로 detached 상태에서 commit 했던 내용을 복구할 수 있다.
    • 이전버전으로 되돌려서 수정하는 것은 보통 Rebase를 많이 쓰고 test를 진행할때는 branch를 따로 만들어 작업한다.

git을 사용하는 원초적인 이유 🧐

  • 버전의 유용한 관리
    ➡️ 여러개의 branch를 만들어 각 필요에 따라 관리 가능, 변경 사항들을 merge를 통해 손쉽게 병합이 가능하다.
  • 효율적인 디버깅
    ➡️ 어떤 버전의 어떤 부분부터 버그가 발생하는지 알 수 있고 이를 토대로 효율적인 디버깅을 수행할 수 있다.
  • 네트워크 없이 프로젝트 버전 관리
    ➡️ git add/commit을 통해 local 안에서 git이 변경된 내용을 지속적으로 버전업 할 수 있다.

Reference

profile
Frontend Developer, 올라운더가 되고싶은 잡부 개발자, ISTP, 겉촉속바 인간, 블로그 주제 찾아다니는 사람

0개의 댓글