git을 잘 이해하려면 먼저 git의 workflow를 알아야한다. git은 크게 아래와 같이 세가지의 작업환경으로 나뉘어져 있다.
- working directory: 파일들을 작업(수정)하고 있는 공간
- staging area: 버전 history에 저장할 준비가 되어있는 파일들을 옮겨 놓는 공간
- .git directry: 버전의 history를 갖고 있는 git repository
add를 통해 working directory에 있는 파일들을 staging area로 옮길 수 있고, commit을 통해 staging area에 있는 파일들을 git version history에 저장하게 된다. 이 덕에 git checkout을 통해 언제든지 원하는 버전의 파일로 다시 돌아갈 수 있다.
이러한 것들은 내 컴퓨터에만 보관되어 있기 때문에 github과 같은 서버에 업로드 해둔다. 로컬에서 서버로 올릴땐 push, 서버에서 로컬로 가져올 때는 pull 명령어를 사용한다.
각각의 commit에는 고유 해쉬코드가 있는데, 이 id를 통해 버전 정보를 참조할 수 있다. 해쉬코드 id에는 버전에 대한 메세지와 작성자, 날짜, 시간정보도 포함되어 있다.
working directory는 상태를 크게 다음과 같이 두가지로 구분할 수 있다.
- Tracked: 해당 파일은 git의 관리 대상이다.
- Untracked: 해당 파일은 git의 관리 대상이 아니다.(git이 인식하지 못한다) 하지만 git add를 통해 tracked 상태로 바꿔줄 수 있다.
tracked 파일은 또 다음과 같이 세가지 상태로 구분할 수 있다.
- Unmodified: 마지막 commit으로부터 파일의 내용이 변경되지 않았다.(최신 버전이 유지되고 있다.)
- Modified: 파일의 내용이 변경되었다. 이때 마지막으로 commit했을 때가 아닌 staged상태에서 수정된 사항이 있을 때이다.
- Staged: Tracked 상태로 바꾸고 commit이 가능한 상태이다.
git add를 사용하면 untracked 또는 modified 상태인 파일을 tracked인 staged인 상태로 된다.
이들의 흐름도를 표현하면 다음과 같다.
참고: 슬git로운 코딩생활, git 공식문서, 드림코딩
'Git' 카테고리의 다른 글
git status | 파일 추적 상태 확인하기, 간단하게 확인하는 법 (0) | 2023.01.25 |
---|---|
git init | git이 내 파일을 추적할 수 있도록/없도록 설정하기 (0) | 2023.01.25 |
git --help, -h | git 명령어 세부 정보를 볼 수 있는 명령어 (0) | 2023.01.21 |
git config | alias로 git 명령어 단축어 만들기 (0) | 2023.01.21 |
git config | core.autocrlf - 운영체제별 줄바꿈을 할 때 들어가는 문자열 충돌 해결하기 (0) | 2023.01.21 |