Git Workflow
깃 레포지토리에 커밋을 하기까지는 총 3개의 영역이 존재
1. Working directory
내가 작업하고 있는 프로젝트 디렉토리
Untracked : Git 체크하지 못하는 파일들.
Tracked : Git이 체크하고 있는 파일들.
- Unmodified : 수정되지 않은 파일. (원격 레포지토리의 파일과 같은 상태)
- modified : 원격 레포지토리의 파일과 다른 상태로 add 명령을 통해 staging area로 넘길 수 있는 상태
- staged : "add" 명령어를 통해 staging area에 추가된 상태
2. Staging Area
커밋을 하기위해 “add” 명령어로 추가한 파일들이 모여있는 공간
3. Repository
커밋들이 모여있는 장소
Staging Area는 왜 필요한가?
바로 커밋을 하면되는데 왜 staging area라는 추가적인 메모리 공간을 사용하는지에 대한 궁금함이 생김.
찾아본 결과 아래와 같은 3가지 이유와 직결됨.
1. 일부분만 커밋하고 싶을 때
>> Working directory에서 자유롭게 소스코드를 수정하면서 원하는 부분만 atomic하게 커밋을 하고 싶을 때 staging area를 활용하면 일부분 커밋이 원활히 가능.
2. 충돌을 해결할 때
>> 충돌이 발생했을 경우 해결을 위한 데이터를 Staging Area에 저장해두는 것이 좋음.
svn도 마찬가지로 어떤 파일이 충돌했는지 ‘파일 상태’를 기억하지만 Git은 필요한 만큼만 충돌을 해소하고 그 부분만 add하여 커밋하면 되기 때문에 편리함.
3. 커밋 다시하기
>> 커밋을 수정할 때 로그메시지 뿐만 아니라 파일들도 조금의 수정이 필요할 때 staging area에 수정 후 다시 add를 해주면 됨.
.gitignore
- Git으로 Tracking하고 싶지 않은 파일들에 대한 설정 파일.
작성하는 방식으로는
- 파일이름을 지정하거나.
- *.txt 처럼 특정 확장자를 지정하거나.
- folder/ 처럼 폴더안의 모든 내용을 지정할 수 있음. (예로 node_modules와 같은 의존성을 담고 있는 폴더 등을 지정)
GitHub ?
깃헙을 사용하는 이유는 단순하게 로컬 레포지토리에 저장해놨을 경우
로컬 자체에 문제 때문에 데이터가 다 날아갈 수 있는 위험이 있기 때문에
원격 레포지토리를 추가로 사용하는 것.
클라우드 서비스 느낌과 동일함.
Reference
https://www.youtube.com/watch?v=Z9dvM7qgN9s&t=979s
'DevOps. > Git' 카테고리의 다른 글
[Git] 특정 파일 혹은 폴더만 add하기 (1) | 2024.01.31 |
---|---|
[Git] Gerrit을 통한 Commit 단위 코드리뷰 (0) | 2024.01.23 |
[Git] Github-Flow [깃 브랜치 전략] (0) | 2024.01.16 |
[Git] 원격 레포지토리 변경사항 로컬 브랜치로 가져오기 (0) | 2024.01.15 |
[Git] Git-Flow [깃 브랜치 전략] (0) | 2024.01.15 |
개발 기술 블로그, Dev
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!