git을 사용하여 계산기 프로그램을 만드는 프로젝트 실습
이전글에서 계산기와 라이센스 2개의 디렉토리를 생성하고 커밋(commit)을 직접 해보았다.
추가적으로 git에서 add 명령어 사용할 때 몇 가지 알아가고자 한다.
git add
우선 calculator.py와 Lisence.txt 파일을 각각 수정을 해보았다.
우리가 git add를 해주는건 어떤 의미가 있었다 했을까?
- 변경된 내용이 커밋(commit)에 반영 될 수 있도록 커밋 할 대상으로 지정해준다.
- 해당 파일을 스테이징 에어리어(staging area)에 옳기는 것이다.
▼ 현재 상황
계산기와 라이센스 파일 두개를 수정했지만 add는 계산기 파일만 해주었다.
그렇기 때문에 계산기 파일만 스테이징 에어리어에 새로운 모습으로 있기에
계산기 파일은 '#계산기' 라는 문구가 추가된 새로운 모습으로,
라이센스는 '#라이센스'라는 문구가 추가되기 이전 모습 그대로 커밋에 반영 될 것이다.
한번 확인해보자.
git add (calculator.py)
상태를 확인하기위해 내용을 해석해보자
지금 이 결과를 자세히 살펴보자면 크게 두가지가있는데
첫 번째는 changes to be committed 라고 되어있다.
이 말은 커밋에 반영될 변경 사항을 나타낸다. (git add를 해주었던 caclulator.py 파일이 보인다.)
두 번째는 changes not staged for commit 라고 되어있다.
여기서 stage는 파일을 스테이징 에어리어에 추가하는 동작이라고 설명하였는데
변경 사항은 있었지만 git add를 해주지 않아서 " not staged " 스테이징 에어리어에 추가되지 않는 파일을 말한다.
(git add를 해주지 않았던 License 파일이 보인다.)
즉 이상태로 커밋을 한다면 계산기 파일은 내용이 추가된 새 모습대로,
라이센스 파일은 추가되기 이전 모습으로 커밋에 반영 된다.
git add (calculator.py + License)
▼ 이제 License도 스테이징 에어리어에 추가 (= add ) 해보자.
git status로 상태를 확인해보면 라이센스 파일도 스테이징 에어리어에 잘 추가 되어있는 것을 볼 수있다.
파일을 여러가지 수정을 했는데 어떤 것만 git add를 해주고 어떤 파일을 안 해주면
차후 버전관리에 문제가 생기므로 커밋을 하기전에 status 를 사용하여
스테이징 에어리어에 수정한 파일들이 다 들어있는지 확인해보는 습관도 길들여야 할 필요가 있다.
git add Directory
▼ 이번에는 파일이아닌 디렉토리를 추가하는데,
calculator.py 파일에 코드에 관한 회의 내용을 담을 디렉토리를 만들어보겠다.
▷ mkdir meeting-log
▷ cd meeting-log
▷ touch day1
▷ touch day2
▷ cd ..
※ 해당 명령어가 기억이 나지 않는다면 레포지토리 생성 글에서 명령어 사이트 참고하자
방금 추가한 meeting-log 디렉토리도 커밋에 반영 하고자 할경우,
그냥 git add한 다음 한칸 뜨우고 meeting-log/라고 써주면 된다.
git status로 확인해보면 그 디렉토리 안에있는 모든 파일이 스테이징 에어리어에 추가되었다.
우리가 개발을 하다보면 파일을 여러 개 수정하고 커밋 해야 될 때가 많을 것이다.
그럴 때마다 수정한 모든 파일에 대해서 git add를 해야하지만 여러번 해야하니 불편할 것이다.
해결 방법을 알아보자.
git add .
변경 사항이 있는 모든 파일을 한번에 스테이징 에어리어에 추가하는 방법을 사용해야한다.
이 상태에서 우리는 스테이징 에어리어에 추가하기위해 git add를 두 번 사용했었다
git add 에서 뒤에 ( . ) 점을 붙여 실행해보자.
이 ( . ) 점은 현재 프로젝트 디렉토리 내에서 변경 사항이 생긴 모든 파일들을
스테이징 에어리어에 추가한다 라는 뜻이다.
변경 사항이있던 계산기 파일과 라이센스 파일이 git add. 으로 인해
스테이징 에어리어에 한번에 추가 되었다는 것을 볼 수있다.
커밋에 특정 파일들만 변경된 새 모습으로 반영 하고싶다면 ▶ git add (한번씩)
수정한 파일 전부를 커밋에 반영 하고싶다면 ▶ git add . (점 붙여서)
▼ 마무리 commit
git status
작업 영역과 관련해서 Git으로 관리되는 파일은 일종의 '상태(status)'라는 걸 가진다.
일단 Git에서 파일들은 크게 다음 2가지 상태를 가진다.
- Untracked 상태
- Tracked 상태
그리고 Tracked 상태는 다시 아래와 같은 3가지 상태를 가진다.
- Staged 상태
- Unmodified 상태
- Modified 상태
1. Untracked 상태
Untracked는 '추적되지 않고 있는'이라는 뜻이며
이 상태는 파일이 Git에 의해서 그 변동사항이 전혀 추적되고 있지 않는 상태를 뜻한다.
예를 들어, 파일을 새로 생성하고 그 파일을 한 번도 git add 해주지 않았다면 언트랙 상태이다.
2. Tracked 상태
파일이 Git에 의해 그 변동사항이 추적되고 있는 상태이다.
이 상태는 다시 그 특성에 따라 3가지 상태(staged,unmodified,modified) 로 나뉜다.
(1) Staged 상태
파일의 내용이 수정되고나서, staging area에 올라와있는 상태를
Staged(스테이징된, stage area에 올려진) 상태이며
새로 생성한 파일에 내용을 쓰고 git add를 해주거나
한 번이라도 커밋에 포함됐었던 파일이라도 내용을 수정하고 git add를 해주면 스테이지 상태이다.
(2) Unmodified 상태
현재 파일의 내용이 최신 커밋의 모습과 비교했을 때 전혀 바뀐 게 없는 상태면
그 파일은 Unmodified(수정되지 않은, 변한 게 없는) 상태이다.
커밋을 하고 난 직후에는 working directory 안의 모든 파일들이 수정되지 않은 상태가 된다.
(3) Modified 상태
최신 커밋의 모습과 비교했을 때 조금이라도 바뀐 내용이 있는 상태면 그 파일은 Modified(수정된) 상태이다.
이렇게 Git에서 파일은 매 순간 4가지 상태 중 하나의 상태에 있게되며. 이 내용을 그림으로 정리하면 아래와 같다.
- Add the file : Untracked 상태의 파일을 처음으로 git add 해주면 - Staged 상태
- Edit the file : 최신 커밋과 비교했을 때 차이가 없는 Unmodified 상태의 파일의 내용을 수정하면 - Modified 상태
- Stage the file : Modified 상태의 파일을 git add 해주면 - Staged 상태
- Remove the file : 파일삭제 함으로써 git 에서 인식 불가
- Commit : 커밋을 하면 staging area에 있던 파일들이 커밋에 반영되고, 모든 파일들은 최신 커밋과 차이가 없게 됨에 따라 - Unmodified 상태
'Git' 카테고리의 다른 글
Git (1)~(6)까지 커멘드 정리 (0) | 2024.09.03 |
---|---|
(6) Git add reset [취소하기] (0) | 2024.09.03 |
(4) Git의 커밋(commit) 해보기 (0) | 2024.08.25 |
(3) Git을 사용하여 레포지토리(repository) 만들기 (0) | 2024.08.25 |
(2) Git 의 기본 개념 (0) | 2024.08.25 |