🚀 94sssh
Published on

2025.11.15

[모두의 리눅스] - 19. 버전 관리 시스템

19.3. 기본적인 사용법

리비전 | 커밋: 어느 시점에서의 프로젝트 상태

git commit-m 옵션 없이 실행하면 로그 메세지 입력을 위해 에디터가 실행되는데, 에디터를 따로 지정하지 않으면 Vim이 실행됨.

변경 이력 확인시 git log를 사용하는데, -p옵션을 지정하면 커밋별로 차이점을 같이 표시함.

커밋 오브젝트명 지정 시 커밋이 구별이 가능하면 40글자를 전부 지정하지 않고, 7글자 정도로 지정할 수 있음.

명령어내용
git init리포지토리 생성
git add커밋 대상으로 등록
git commit커밋 수행
git status작업 트리의 상태 출력
git diff차이 표시
git log이력 표시

19.4. 작업 트리와 인덱스

인덱스: 파일의 변경 사항을 리포지토리에 반영하기 전 배치하는 영역

git add의 역할이 작업 트리에서 인덱스에 파일을 등록하는 것.
git diff로 작업 트리와 인덱스의 차이를 표시할 수 있음.
-cached 옵션을 지정하면 인덱스와 리포지토리의 차이를 출력할 수 있고, HEAD 옵션을 지정하면 작업 트리와 리포지토리의 차이를 표시할 수 있음.

19.5. 커밋 단위와 인덱스

$ git add -u # 작업 트리 내 변경한 파일을 전부 인덱스에 등록
$ git add -A # 작업 트리 내 모든 파일을 인덱스에 등록

-u옵션으로는 새로 작성한 파일은 등록되지 않아 모든 파일을 등록하려면 -A를 사용

19.6. 실수했을 때 복구하기

19.6.1. 커밋하지 않은 변경 사항 복구

$ git checkout HEAD .

파일의 변경 사항이 전부 복원되어 작업 트리와 인덱스가 리포지토리와 동일한 상태가 됨.

19.6.2. 잘못된 커밋으로부터 복구

$ git revert <취소하고 싶은 커밋 오브젝트명>

git revert를 해도 깃 커밋 이력에서 해당 커밋이 지워지는 것이 아니라, 변경 사항을 복구하는 새로운 커밋이 만들어진다. 이는 변경 사항을 수정하고 수동으로 커밋하는 것과 동일한 작업.

19.7. 브랜치

토픽 브랜치: 한 가지 기능을 추가하기 위해 만든 브랜치

19.8. 리포지토리의 백업 작성

git --bare init # 백업용 리포지토리 작성

git init--bare 옵션을 지정해 백업용 리포지토리를 만들 수 있음. 관례적으로 디렉터리 이름 끝에는 .git을 붙임.

git push로 커밋 이력을 전송할 수 있음. git push <이력을 전달받을 리포지터리> <이력을 보낼 브랜치>:<이력을 전달받을 브랜치>로 백업용 리포지토리에 현 리포지토리의 브랜치를 보내 백업할 수 있음.

복원할 때는 git clone 사용.

19.9. 2인 이상의 작업

git fetch <리포지토리>를 통해 다른 리포지토리의 이력을 받을 수 있음. 명령어를 실행해도 원격 추적 브랜치가 갱신된 것이고 작업 트리나 로컬 브랜치에는 반영되지 않는데, 가져온 이력을 로컬 브랜치에 반영할 때는 git merge를 사용.

git pull은 두 명령어를 합친 명령어.