목차
Git이란?
- Git이란 간단히 말하면 코드 버전 관리 시스템입니다.
Git의 작업영역
- Working Directory / Staging Area / Local repository / Remote repository
- Working Directory
- 현재 로컬환경에서 작업 중인 프로젝트 폴더
- Staging Area
- commit 하기 전 commit 할 파일들을 모아두는 공간
- commit 시 Staging Area안의 내용이 한 번에 Local Repository에 반영
- Local Repository
- commit된 파일들이 위치하는 영역 (이를 통해 버전 관리를 진행합니다.)
- Remote Repository
- 협업이나 백업을 위해 존재하는 원격 저장소
- Working Directory
git 시작
- "git init"을 통해 Local Repository를 생성할 수 있습니다. (즉, .git 폴더가 생성됩니다.)
- "git add"를 통해 현재 프로젝트 폴더에서 작업된 내용을 Staging Area에 올릴 수 있습니다.
- 파일 스테이징 하기 : "git add 파일"
- 여러 파일 스테이징 하기 : "git add 파일1 파일2 파일3 ..."
- 변경된 모든 파일 스테이징 하기 : "git add ."
- (참고)스테이징한 파일을 다시 취소하고 싶은 경우 : "git restore --staged 파일명"
- "git commit"을 통해 Staging Area에 있는 파일들을 커밋할 수 있습니다. (즉, 버전이 생성되는 것입니다.)
- 스테이징된 파일들 커밋하기 : "git commit -m 커밋메시지"
Git이 관리하는 파일 상태
- Untracked
- 파일이 처음 생성 시에 해당 파일은 Git이 추적하지 못하므로 Untracked 상태입니다.
- Tracked
- 처음 파일이 생성되고 Untracked 파일이 add나 commit을 통해 Git이 관리하도록 해주면 Tracked 상태가 됩니다.
- git add 만 해주더라도 Tracked file이 됩니다.
- Ignored
- .gitignore에 작성된 파일이나 폴더
- 해당 파일은 Git이 추적하지 않습니다.
git status를 통한 파일 상태 확인
- "git status" 명령어를 사용하면 해당 브랜치의 변경되거나 추가된 파일들의 상태를 표시해 줍니다.
- 제일 처음 줄에 On branch 브랜치명을 통해 현재 브랜치명이 표시되어 있습니다.
- 다양한 상태
- nothing to commit, working tree clean
- 현재 브랜치에 변경사항이 존재하지 않습니다.
- Untracked files
- 새로 생성된 파일, 즉 Git에서 추적되고 있지 않은 파일들입니다. (= 새로 생긴 파일)
- Changes to be committed
- Staging Area에 올라간 파일들입니다. (= add된 상태) (초록색)
- new file : 새로운 파일
- modified : 변경된 파일
- deleted : 삭제된 파일
- Changes not staged for commit
- 현재 브랜치기준 변경되었지만, Staging Area에 올라가지 않은 파일들입니다. (= 변경되었지만, add 되지 않은 상태) (빨간색)
- modified : 변경된 파일
- deleted : 삭제된 파일
- (참고 : new file은 add 되기 전에 Untracked File이기 때문에 여기에 표시되지 않고, Untracked files에 표시가 됩니다.)
- nothing to commit, working tree clean
- "git status -s" 의 경우 두 개의 글자로 현재 상태를 표시합니다.
- nothing to commit, working tree clean일 경우 아무런 내용이 출력되지 않습니다.
- Untracked files 의 경우 "?? 파일명"으로 표시됩니다.
- Changes to be committed(X)(초록색) 와 Changes not staged for commit(Y)(빨간색)는 각각 해당 파일 상태를 2개의 문자(XY)로 표시합니다.
- 해당 내용이 없을 경우 공백으로 표시됩니다.
- Changes to be committed(왼쪽문자)
- Staging Area에 올라간 파일들입니다. (= add된 상태) (초록색)
- new file : A로 표기
- modified : M으로 표기
- deleted : D로 표기
- Changes not staged for commit(오른쪽문자)
- 현재 브랜치기준 변경되었지만, Staging Area에 올라가지 않은 파일들입니다. (= 변경되었지만, add 되지 않은 상태) (빨간색)
- modified : M으로 표기
- deleted : D로 표기
- (참고 : new file은 add 되기 전에 Untracked File이기 때문에 여기에 표시되지 않고, Untracked files로 ??표시가 됩니다.)
- 예시
- a파일은 수정되고 stage에 올라간 상태입니다.
- b파일은 수정되고 stage에 올라간 상태이지만, stage에 올라간 이후에 추가로 수정된 상태입니다.(이 뒤에 작업은 아직 stage에 올라가지 않은 상태입니다.)
- c파일은 삭제되고 stage에 해당 삭제내용을 add한 상태입니다.
- d파일과 f파일은 생성된 뒤, stage에 올라간 상태입니다.
- e파일의 경우 생성된 뒤, 아직 add가 되지않아 Untracked 상태입니다.
Git 설정(config)
- git에는 사용자이름, 사용자이메일, 기준이 되는 브랜치명 등 여러 설정항목들이 있습니다. 해당 설정항목들은 config 파일에 존재합니다. config 파일은 로컬 - 글로벌 - 시스템 우선순위로 적용됩니다.
- 로컬 : 해당프로젝트폴더\.git\config
- 프로젝트 별로 적용되는 설정사항입니다.
- 글로벌 : C:\Users\[사용자 아이디]\.gitconfig
- 시스템 : C:\Program Files\Git\etc\gitconfig
- 로컬 : 해당프로젝트폴더\.git\config
- git config
- "git config --list"를 통해 해당 프로젝트에 적용되는 모든 설정사항을 확인할 수 있습니다.
- --global
- 이 옵션을 적용하면 글로벌 config에 적용이 됩니다. 보통 컴퓨터를 사용하는 사용자 이름, 이메일 계정 등을 글로벌 config에 적용시킵니다.
- 이 옵션을 적용하지 않으면 로컬 config에 적용됩니다. (즉, 다른 프로젝트에서는 해당 config 정보가 저장되어 있지 않습니다.)
- "git config --global 설정명 설정값"
- 예시
- "git config --global user.name 사용자이름"
- "git config --global user.email 이메일계정"
- "git config --global init.defaultbranch main"
- 이 옵션은 기준이 되는 브랜치 명이 master로 생성되는 경우가 많은데, 이를 main으로 변경시켜 주는 것입니다.
- 이 옵션을 적용하면 글로벌 config에 적용이 됩니다. 보통 컴퓨터를 사용하는 사용자 이름, 이메일 계정 등을 글로벌 config에 적용시킵니다.
- --unset
- 이 명령어는 해당 config 정보를 삭제시킵니다.
- "git config --unset 설정명"
- 예시
- "git config --global --unset user.name"
- "git config --global --unset user.email"
'ETC > Git' 카테고리의 다른 글
[Git] commit 내역 살펴보기 (0) | 2024.05.01 |
---|---|
[Git] (정리)혼자서 GitFlow를 따라 프로젝트 진행하기 (1) | 2023.12.18 |
[Git] GitFlow (0) | 2023.12.14 |
[Git] GitHub 기본 (0) | 2023.12.14 |
[Git] commit 취소하기 (git revert) / commit reset하기 (git reset) (0) | 2023.12.14 |