Repository
리포지토리는 깃 이력(파일 변경 이력)을 저장하는 저장소로써 깃 이력이 들어가는 병에 비유할 수 있다. 각 프로젝트는 하나의 리포지토리를 가지고 있으며 해당 리포지토리를 통해 버전을 관리할 수 있다.
이번에는 파일 변경 내역을 추적하기 위해 폴더를 깃 레포지토리로 만들고 파일 변경을 추적해 보도록 하자.
- testcase 폴더를 만든 뒤, 해당 폴더에 접속한다.
- git init을 통해 해당 폴더를 깃 리포지토리로 만들어 파일 변경 이력을 추적한다. 파일 변경 이력을 추가하기 위해, helloworld 파일을 만든다.
- 변경된 파일을 git status을 통해 조회한다.
- git init : 해당 폴더를 파일 변경 이력이 추적가능한 깃 리포지토리로 만든다. 이때 해당 폴더에서는 git 관련 명령어를 수행할 수 있게 된다.
- git status: 변경된 파일 이력을 나타낸다.
Commit
Git이 버전 관리 시스템이라고 한다면, Commit은 하나의 버전을 나타낸다. 게임에 비유하자면 체크 포인트 혹은 세이브 포인트에 비유할 수 있다. 아까 리포지토리를 병에 비유했었는데, 커밋은 이 병에 있는 하나의 알맹이에 비유가 가능하다.
이렇게 커밋을 남김으로 인해, 우리가 예전에 했던 세이브 포인트로 되돌아갈 수 있고, 커밋을 남길 때 메시지를 함께 남김으로써 어떠한 이유로 파일을 변경했는지에 대한 근거를 남길 수 있다.
Git commit 과정은 다음과 같이 진행된다.
- 폴더에서 작업을 진행한다.
- 변경된 파일들을 Staging Area에 올린다.
- Stagin Area에 있는 파일들을 커밋하여 하나의 이력을 남긴다.
여기서 Staging Area의 역할에 대해서 의문이 생길 수 있다. 이는 아래 직접 Commit을 해보는 과정을 진행해 본다면 쉽게 이해를 할 수가 있다.
만약 다음과 같이 max, min이라는 파일을 만들고 max파일을 만든 이력과, min파일을 만든 이력을 만들어라!라는 과제가 주어졌다고 하자. 그럼 당연히 해당 문장을 읽고 min, max을 만든 다음 commit 명령어를 통해 이력을 남길 것이다. 하지만 이때 문제가 생기는데 max, min이라는 파일이 변경되었기 때문에, 커밋을 남기게 되면 하나의 커밋에 max, min 파일이 변경되었다고 밖에 표현할 수밖에 없다.
이러한 문제를 해결하기 위해서 Stagin Area가 존재한다. Staging Area을 이용하면 변경된 파일을 뽑아 해당 공간에 넣고 커밋하여 커밋을 편하게 관리할 수 있게 한다.
커밋을 할 때, 제일 중요한 점은 하나의 목적에 따라 파일들을 변경하고 커밋을 남겨야 한다는 것이다. 만약에 방금 같은 상황에서 max, min 파일을 생성하고 git commit -m "max, min 파일 추가"라는 커밋 이력을 남기게 되면 2개의 목적이 담긴 커밋 이력이 생기게 되는데 이는 추후 min파일에 문제가 있어 해당 커밋으로 되돌아왔을 때 max 파일 변경 이력도 봐야 하는 단점이 생긴다.
따라서 하나의 목적에 따라 파일들을 변경하고 커밋을 남겨야 추후 버전을 관리할 때 용이하게 처리할 수 있다.
- git add 파일이름 : 변경된 파일을 Staging Area에 추가한다.
- git add . : 변경된 모든 파일을 Staging Area에 추가한다.
- git commit -m "메시지내용" : Staging Area에 저장된 변경 파일들이 어떠한 이유로 변경되었는지에 대한 커밋(이력)을 남긴다.
- git log : 저장된 커밋 내역을 확인한다.
--amend
만약 커밋을 했는데, 바로 전 커밋에서 커밋 메시지를 잘못 작성했거나, 파일을 빠뜨린 경우가 종종 생길 때가 있다. 이때 --amend 옵션을 이용하면 해당 문제를 쉽게 해결할 수 있다.
예를 들어서 더미 데이터 temp1, tmep2를 만들어 커밋하라고 과제가 주어졌다. 하지만 과제를 수행하는 과정에서 커밋의 실수로 temp1만 추가한 다음 커밋을 해버렸고 추후 작업하다가 temp2 파일을 만들지 않았다는 것을 깨닫고 뒤늦게 수습하는 상황이다.
git commit --amend 명령어를 사용하게 되면, 전에 했던 커밋 내용이 보이며 git add로 스테이징 했던 temp2 파일이 성공적으로 올라간 것을 확인할 수 있다. 이때 커밋한 메시지 내용을 "temp1 파일추가"에서 "temp1, temp2 파일 추가"로 수정한다.
그런 다음 git log 명령어를 이용해 확인해 보면 성공적으로 git commit이 된 것을 확인할 수 있다.
'Cloud > Git' 카테고리의 다른 글
특정 Commit으로 되돌리기 (0) | 2023.02.17 |
---|---|
Stash (0) | 2023.02.17 |
Branch와 Merge (0) | 2023.02.17 |
Git설치와 설정 (0) | 2023.02.17 |
Git과 Github (0) | 2023.02.14 |