2023.11.16(목)

⌨️Git CLI

+) 리눅스 기본 명령어

💡Git의 Stage와 Status

  • Git의 3가지 영역
    • Working Directory
      • 사용자가 작업하고 있는 project의 directory
      • project의 특정 버전을 checkout한 것
    • Staging Area
      • commit할 파일에 대한 정보를 저장하는 곳
      • commit할 snapshot을 만드는 곳
    • Git Repository
      • project의 metadata와 database를 저장하는 곳
      • Staging Area에 있는 파일들을 commit해서 Git Repository에 영구적인 snapshot으로 저장

Git의 3가지 상태
Git의 동작

  • Git의 4가지 파일 상태
    1. Untracked
      • Git으로 버전 관리를 하지 않는 상태
      • Git이 추적 관리하지 않는 상태
    2. Unmodified
      • git add로 파일이 Staging Area에 올라갔지만 파일에 변경은 없는 상태
      • Git이 추적 관리하는 상태
    3. Modified
      • Git이 추적 관리하던 파일이 수정된 상태 (git add 후 파일이 수정되었을 때)
      • 다시 git add로 수정된 최신 버전의 파일을 Stage해주어야 함
    4. Staged
      • Staging Area에서 file이 Staged 되어 반영된 상태
      • commit에 포함됨

Git의 4가지 파일 상태

🚩Git Basic Commands

  • git init
    • Git을 사용하기 위한 initialization
    • .git directory📁가 생성(이미 있어도 override하지는 않음)되고 해당 프로젝트 directory는 Git repository(저장소)가 됨
  • git add <file>
    • Add to Staging Area
      • Untracked → Tracked(Staged)
      • Modified → Staged
    • file이 아니라 directory를 add하면 directory 내의 모든 파일에 대해 적용됨
    • git add . : 모든 파일에 대해 add
  • git status
    • 현재 파일들의 상태 확인
    • 'Git의 4가지 파일 상태' 용어를 따름
  • git commit 🔗
    • Git 설정에 등록된 editor(default Vim)가 실행 → i를 눌러 입력 모드로 전환 → 첫 줄에 message 입력 → esc를 눌러 명령 모드로 전환 → wq 입력하여 Vim 저장하고 종료
    • 보통 -m 옵션을 사용하여 git commit -m "commit message"로 inline으로 메시지 첨부
    • 변경 내용이 없어도 commit하려면 git commit --allow-empty -m "Empty Commit Message"
  • git log
    • commit 기록 확인
  • git push -u <remote> <branch>
    • local branch를 원격 저장소에 올리기
    • -u 옵션은 보통 최초에 push할 때 사용 → local branch와 remote branch가 연결되어 다음에는 git push만 써도 됨
  • git remote -v
    • 연결된 원격 저장소 확인
    • 원격 저장소 추가 : git remote add <remote> <https://url-of-the-repository.git>
    • 원격 저장소 연결 제거 : git remote remove <name>
  • git clone <https://url-of-the-repository.git>
    • 특정 git repository를 사용자의 working directory에 복제(copy)
    • 주로 프로젝트를 처음 가져올 때 사용
    • 뒤에 clone할 directory 위치도 명시할 수 있음
    • 현재 폴더에 바로 clone : git clone <https://url-of-the-repository.git> .
  • git pull <remote> <branch>
    • 현재 작업 중인 local branch를 원격 저장소의 최신 버전으로 update
    • 이미 존재하는 local 저장소를 업데이트할 때 사용
    • git fetchgit merge의 조합 (git fetch는 원격 저장소의 변경 사항을 가져오고, git merge는 가져온 변경 사항을 local branch에 병합)

🔄️Modify & Undo

  • Git Configuration Settings
    • 사용자 이름 설정 : git config --global user.name "your_name"
    • 사용자 이메일(Github 가입 시 사용한 이메일) 설정 : git config --global user.email "your_email"
    • git init을 통해 생성한 local project의 default branch 수정 : git config --global init.defaultBranch <branch>
    • 정보 확인 : git config --list
  • 파일 상태를 Unstage로 변경
    • git rm --cached <file> 🔗
      • 해당 file을 Unstage & Untracked file로 변경
      • --cached option을 사용하지 않으면 file까지 삭제함
    • git reset HEAD <file> 🔗
      • 해당 file을 단순히 Unstage만 하고 file은 여전히 tracking
  • Commit 수정
    • git commit --amend 🔗
      • text editor가 열리고 commit을 수정할 수 있음
      • -m 옵션을 사용하여 git commit --amend -m "new commit message" 로 inline으로 작업 가능
      • 이렇게 --amend 옵션으로 commit을 고치는 작업은, 추가로 작업한 일이 작다고 하더라도 이전의 commit을 완전히 새로 고쳐서 새 commit으로 변경하는 것을 의미
      • 이전의 commit은 일어나지 않은 일이 되는 것이고 당연히 history에도 남지 않음

🚥Git GUI

  • Visual Studio Code의 Source Control에서 Git GUI를 지원한다.
  • 추가로 Extensions에서 Git History by Don Jayamanne를 설치하면 git log에 의한 history까지 볼 수 있다.

Branch, pull에 관해서는 다음 시간에!

profile
이것저것 관심 많은 개발자👩‍💻

2개의 댓글

comment-user-thumbnail
2023년 11월 17일

상세하게 잘 작성하셨네요! 잘 읽었습니다 :)

1개의 답글