Git Version Control

배추·2025년 4월 2일
0

생활코딩-Git

목록 보기
2/6

git의 버전관리에 대해 알아봅니다.


저장소(repository) 만드는 방법

  • git과 연결할 폴더로 들어가서
  • git init .: 버전 정보들이 들어갈 .git 디렉토리가 생성된다.
    • init: initialize 초기화.
    • .: 현재 디렉토리.

버전 생성 방법

  • Working tree: 파일을 만들고 수정. 아직 버전으로 만들어지기 전 단계.
  • Staging Area: 버전을 만들려는 파일들. 버전을 만들 때 working tree에 있는 특정 파일들만 선택하여 Staging Area애 올림. git은 Staging Area 위에 있는 파일들만 하나의 버전으로 만든다.
  • Repository: 저장소. 만들어진 버전이 저장되는 곳. (.git 디렉토리)

Working tree

  • git status: Working tree status. 현재 작업 디렉토리의 상태 확인.
    • untracked: Git이 아직 모르는 새 파일 (새로 만든 파일로 git add를 하지 않아서 Git이 추적하고 있지 않음). 커밋 대상이 아님.
    • traked: Git이 이미 알고 있는 파일 (한 번이라도 git add를 해서 스테이징되었거나 커밋된 파일).

Staging Area

  • git add: add to Staging Area. Working tree의 변경사항을 Staging area에 올림.
    • git add 파일명
    • git add 폴더명: 폴더 아래에 있는 모든 파일을 add.
    • git add .: 현재 디렉토리 아래에 있는 모든 파일을 add.

Repository

  • git commit: create version.
    • git commit 만 하면 커밋 메세지를 작성하도록 에디터가 뜸. 메세지를 여러줄로 작성 가능.
      • 기본 에디터 바꾸는 법: git config --global core.editor "원하는editor이름"
    • git commit -m "commit message": 커밋 메세지를 함께 작성 가능.
    • git commit -am "commit message": add와 commit을 한번에. 단, untracked files는 add되지 않음.
  • git log: show version. Git 저장소의 커밋 히스토리 확인.
    • git log --stat: 파일별 변경 통계 보기.
    • git log -p: patch. 커밋마다 변경된 코드(diff) 보기.
    • git log --oneline: 각 커밋을 한 줄로 요약.
    • git log --all: 모든 브랜치의 커밋을 다 보여줌. (HEAD뿐만 아니라 다른 브랜치까지 포함)
    • git log --graph: 브랜치 구조를 트리 형태로 시각화.
    • git log --author="이름": 특정 작성자의 커밋만 보기.
    • git log 파일명: 특정 파일에 대한 커밋 히스토리만 보기.

버전간의 차이점 비교

[Working Directory] ←→ [Staging Area] ←→ [HEAD]

  • git diff: 작업 디렉토리와 스테이지 영역을 비교 (add 하기 전 변경사항).
  • git diff --cached: 스테이지 영역과 최근 커밋을 비교 (add는 했지만 commit은 아직 안 한 변경사항). 내가 "커밋할 예정인 내용"을 미리 확인.
  • git diff HEAD: 작업 디렉토리와 최근 커밋을 비교 (add 여부와 상관 없이 전부 다 보여줌). "내 커밋과 지금 작업 상태의 차이"를 한꺼번에 보고 싶을 때.

버전간의 이동

  • git checkout: 특정 버전으로 working tree를 변경시키는 방법. 버전과 버전을 넘나들 수 있다.
    • git checkout 돌아가고자하는커밋id: 원하는 커밋으로 이동.
    • git checkout main: 가장 최신 상태인 main branch로 이동.

버전 삭제

  • git reset
    • git reset --hard: 마지막 버전으로 돌아감. 마지막 버전 이후에 작업한 것이 사라짐.
      • --hard: 수정하고 있었던 것도 지워버림.
      • --soft, --mixed
    • git reset --hard 돌아가고자하는버전
    • reset은 삭제로도 쓰일 수 있지만, 돌아가고자 하는 commit id를 알고 있다면 복원으로도 쓰일 수 있다.

버전 되돌리기

  • git revert: 버전을 삭제하지 않으면서(Git 기록을 보존하면서), 되돌리는 방법. 특정 커밋을 취소하는 새로운 커밋을 만듦.
    • git revert 변경내용을취소할커밋id: 해당 커밋의 변경 내용을 취소하는 새로운 커밋을 생성. 기존의 커밋(버전)은 내버려두어 삭제되지 않는다.
    • 가장 최근 커밋이 아닌, 과거의 특정 커밋을 되돌리고 싶다면 반드시 특정 커밋 이후의 커밋들을 역순으로 차례대로 revert 해야 한다.
      • Git은 이전 커밋 위에 새로운 커밋을 쌓는 구조이기 때문에, 역순(가장 최신 커밋부터)으로 되돌리지 않으면 충돌이 발생하거나 되돌리기가 어려울 수 있다.
profile
난 🥬

0개의 댓글