일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- forward
- add
- 그래프
- BFS
- 파이썬
- Python
- Merge
- git add
- 오차역전파
- 그래프이론
- WSI
- computer vision
- Branch
- Pathology
- 병리
- git branch
- 분할정복
- 알고리즘
- Segment Anything
- 백준
- cv
- Heap
- git commit
- conflict
- 밑바닥부터 시작하는 딥러닝 1
- DFS
- 딥러닝
- git merge
- Git
- Backpropagation
- Today
- Total
나만의 길
[Git] 02-1. git add, git commit 개념 본문
오늘은 git add, commit에 대해 설명해 보겠습니다. 굉장히 중요하고, git에 핵심적인 원리를 담고 있는 시작 부분이라 생각됩니다. 기초부터 차근차근 배워보겠습니다!
git add, commit
add는 파일들을 stage에 추가하는 명령입니다. stage라는 단어가 조금 생소할 수 있습니다. stage를 직역해보면 무대라는 의미를 가집니다. 파일들을 무대 위에 올린다? 쉽게 이해하기 위해 예를 들어보겠습니다.
철수, 영희, 민수가 있습니다. 셋은 무대위에서 공연하는 것이 목표입니다. 철수는 열심히 연습을 해서 무대 위에 올라갔습니다.
철수는 이 순간을 기억하고 싶을겁니다. 그래서 사진을 찍기로 했죠. 이러한 행위를 snapshot(스냅샷)이라고 합니다. 스냅샷을 하기 위한 명령어가 바로 commit이 됩니다. 조금씩 이해가 되시죠?
영희와 민수도 열심히 연습을 해서 무대 위에 올라가게 되었습니다. 역시 이 장면 또한 스냅샷 해두기로 했습니다. 그런데 철수가 노래연습을 많이 해서 가창능력도 좋아졌습니다. 그렇기 때문에 과거의 철수와는 다른 철수라고 볼 수 있습니다. 그래서 또 스냅샷 해두기로 했습니다.
해당 그림을 보면 철수가 파란색으로 이름이 색칠되어 있습니다. 이는 우리가 작업을 하면서 예상치못한 오류나 에러가 생기면 파일을 수정하는 경우가 생깁니다. 또는 버전을 더욱 좋게 업데이트할 수도 있죠. 그러한 경우라고 생각하면 됩니다.
우리는 총 3가지의 스냅샷이 존재합니다. git의 가장 큰 장점은 바로 해당 스냅샷 위치로 언제든 이동할 수 있습니다. 이를 이런 과정을 할 수 있게 해주는 명령이 바로 commit입니다. 즉, add를 하고 commit을 하게 되면 해당 상태에서 snapshot이 저장되고 우리는 이를 하나의 버전(version)이라고 부릅니다. 이제 이해가 될 거라고 생각됩니다.
이를 저장소 관점에서 살펴보겠습니다.
작업공간과 스테이지 외에도 조금 더 있는게 보이시죠? 이전 init과정에서 살펴본 .git도 있습니다. 원격저장소는 GitHub로 생각하시면 됩니다. 여기서 중요한 점은 파일의 상태입니다. git에서는 총 4가지의 파일의 상태가 존재합니다.
추적되지 않는 Untracked 상태와 추적가능한 Tracked로 나뉘는데, Tracked에는 수정없음, 수정함, 스테이지 됨 3가지의 상태가 존재합니다. 그림을 통해 조금 더 살펴보겠습니다.
add를 하게되면 파일의 상태가 바뀌고, 스테이지에 파일이 저장된 것을 볼 수 있습니다. 여기서 commit을 하게 되면 다음 그림과 같이 변경됩니다.
이제 조금 그림이 익숙해 지신가요? 파일상태를 잘 보시면 수정 없음으로 표기되어 있습니다. 이는 앞서 초기상태인 추적 안됨과는 다른 상태입니다! 원격저장소까지 올리는 개념은 추후에 다시 배워보겠습니다. 살짝 맛보기만 보자면 git에서 자주 사용되는 pull & push와 관련된 개념입니다. 오늘은 여기까지 설명하겠습니다.
설명의 오류나 궁금하신 점은 언제든 피드백 부탁드립니다. 다음 포스팅에서는 git add, commit 실습에 대해 다뤄보겠습니다.
'Git' 카테고리의 다른 글
[Git] 03-3. git merge, conflict 해결 (1) | 2023.07.05 |
---|---|
[Git] 03-2. git branch 실습 (0) | 2023.07.02 |
[Git] 03-1. branch, git 저장원리(Object) (0) | 2023.07.01 |
[Git] 02-2 git add, git commit 실습 (0) | 2023.06.30 |
[Git] 01. git init 저장소 생성 (개념 & 실습) (0) | 2023.06.28 |