오픈소스SW - chapter 4

로두마니·2025년 6월 8일

오픈소스

목록 보기
3/6
post-thumbnail

코드의 변화

깃은 개발 중인 코드의 이력을 만들 수 있음
커밋(commit) : 코드 변화를 기록하는 것, 의미 있는 단위의 변경 작업들을 저장소에 기록하는 동작

고식적(conventional) 파일 관리 방법
의미 있는 변경을 할 때 파일을 복사함.
파일 복사 형태는 파일의 변경 내역을 기록하는 것보다 더 많은 파일을 생성하고 관리해야 하는 부작용이 있음
모든 내용이 중복되기 때문에 용량도 많이 차지함

Git(VCS)을 이용한 파일 관리 방법
깃의 commit은 새로 변경된 부분만 추출하여 저장
파일 이름을 변경하지 않고도 동일한 파일 이름으로 하나로 관리가 가능함
commit : 시간에 따라 변화되는 내용만 관리하고, 코드가 변화된 시간 순서에 따라서 영구적으로 저장한다.

새 파일 생성 및 감지

$ mkdir gitstudy04 # 새 폴더 gitstudy04 만들기
$ cd gitstudy04 # 만든 폴더로 이동
$ gir init # 저장소를 깃으로 초기화

$ code index.html # VS Code를 사용하여 파일 index.html 생성

워킹 디렉터리에 새 파일이 생성됨
워킹 디렉터리에 새 파일이 추가되면 깃은 변화된 상태를 자동으로 감지
이때 깃 상태를 확인할 수 있는 명령어

$ git status # 상태 확인

깃에 새 파일 등록

워킹 디렉터리에 있는 파일은 깃이 자동으로 추적 관리하지 않음
커밋을 하려면 파일의 상태가 추적 가능해야 함
등록 : 워킹 디렉터리에 새로 추가된 untracked 상태의 파일을 tracked 상태로 변경하는 것
파일 등록 >> 워킹 디렉터리의 파일이 스테이지 영역에 추가됨
깃은 스테이지 영역의 관리 목록에 추가된 파일만 이력을 추적할 수 있음

스테이지에 등록 명령어

$ git add index.html # 스테이지에 파일을 등록
$ git add . # 전체 파일과 폴더를 모두 등록

필요한 파일만 스테이지 영역에 등록하여 이력을 추적
스테이지 영역에 등록하지 않은 파일은 커밋 작업에 포함되지 않음
단 빈 폴더는 스테이지 영역에 등록할 수 X

파일 등록 취소
tracked >> untracked 상태 변경
파일 등록 취소 명령어

$ git rm --cached index.html # 스테이지 삭제 rm 대신 reset도 가능

등록된 파일의 이름이 변경 명령어

$ git mv index.html home.html # 파일 이름 변경

첫 번째 커밋


HEAD는 커밋을 가리키는 묵시적 참조 포인터
HEAD는 최종적인 커밋 작업의 위치를 가리킴
HEAD는 커밋될 때마다 한 단계씩 이동함

스냅샷
커밋은 파일 변화를 깃 저장소에 영구적으로 기록함
깃이 다른 버전 관리 도구와 다른점 : 스냅샷 방식(변화된 부분만 찾아 저장)
깃의 스냅샷은 HEAD가 가리키는 커밋을 기반으로 사진을 찍음
깃은 스냅샷 방식을 이용해 빠르게 버전의 차이점 처리, 용량을 적게 사용

파일 상태와 커밋
새롭게 생성된 파일을 커밋하려면 반드시 tracked 상태로 변경해야함
tracked 상태로 파일이 변경됨과 동시에 스테이지 영역에 등록함
tracked 상태인 파일을 수정하면 다시 modified 상태로 변경됨
modified는 untracked 상태
untracked 상태의 파일은 반드시 등록 명령(add)으로 다시 스테이지 상태로 재등록해야 함(재등록하면 tracked 상태로 변경됨)

커밋하기 전에는 status 명령어로 항상 상태를 확인하는 습관이 필요함
워킹 디렉터리가 깨끗하게 정리 X >> 커밋 명령어 수행 X

커밋 명령어

$git commit

깃의 커밋은 HEAD와 스테이지 영역 간 차이를 비교하여 새로운 객체를 생성함
생성된 객체를 깃 저장소에 기록

커밋은 변경된 파일 차이를 깃 저장소에 기록함
커밋을 할 때 생성된 객체를 기록하는 것과 동시에 이를 구별할 수 있는 메시지를 같이 작성해야 함 (꼬리표 개념)
커밋은 파일 이름을 여러 개 사용하지 않고 하나만 가짐
모든 커밋은 반드시 커밋 메시지를 작성해야 함

파일 등록과 커밋을 동시에 실행하는 명령어

$ git commit -a

커밋 확인

  1. 터미널에서 status 명령어를 실행해서 상태를 확인
    (커밋을 하면 스테이지 영역은 초기화됨)
  2. 로그 기록 확인 명령어
$ git log

log 명령어는 시간 순으로 커밋 기록을 출력하는데, 최신 커밋 기록부터 내림차순으로 나열함

profile
해적왕이 될 사나이

0개의 댓글