Git의 각 영역은 크게 온라인과 로컬로 나뉩니다.
Work space
💡 Work space는 Git의 세 가지 영역 중 하나로, Working tree 또는 Work tree라고도 하며, 우리가 눈으로 볼 수 있는 디렉토리 자체를 의미한다.
Git은 Work space를 자동으로 스캔한다. Git이 Work space를 스캔하다가 무언가 변경된 사항을 발견하면 사용자에게 해당 사항을 알려주고, 어떤 행위를 취해야 하는지 적절한 명령어 및 동작을 알려준다.
Work space는 git init을 입력한 직후, 다른 어떠한 Git 명령어도 입력하지 않은 상태의 파일들이 존재하는 영역이다.
파일들의 상태를 확인하기 : git status
Git으로 관리되고 있는 파일들의 상태는 git status 명령어로 확인할 수 있다.
git status
//결과
On branch main
: 현재 브랜치는 main 브랜치입니다.
: 위의 [2.1. 기본 브랜치 이름 변경하기]에서 바꿔둔대로 브랜치 이름이 main으로 붙여져 있습니다.
No commits yet
: 아직 커밋을 하지 않았다는 의미입니다. 커밋에 대해서는 아래에서 설명하겠습니다.
Untracked files: ~
: Untracked는 Git의 관리 하에 있는 파일이 가질 수 있는 상태 중 하나입니다.
(use “git add <file>…” to include in what will be committed)
: git add 파일_이름을 입력하면 커밋될 것들에 해당 파일을 포함시킬 수 있다는 의미입니다.
nothing added to commit but untracked files present (use "git add" to track)
: 아직 add된 파일들이 없으며 Untracked 상태의 파일이 존재하니, git add 명령어를 사용하라고 안내되고 있습니다.
📒 Untracked → 파일의 상태 중 하나입니다.
📒 what will be committed → 커밋될 것들이 모여있는 무언가 → Git의 영역 중 Staging area를 의미합니다.
📒 use git add to track → track하기 위해서는 git add 명령어를 사용해야 합니다.
Git의 관리 하에 있는 파일들의 상태 2가지.
Untracked :Git에 의해 파일의 상태가 추적되고 있지 않은 상태를 의미.파일의 내용을 변경하여도 Git이 파일의 내용 변경을 감지하지 못한다.
Tracked (Unmodified / Modified / Staged) : 파일의 상태가 추적되고 있음. Untracked 상태의 파일은 Commit이라는 과정을 거치면 Tracked 상태로 바뀐다.
Unmodified : 파일의 수정이 Git에 의해 감지되지 않은 상태
Modified : 파일의 수정이 Git에 의해 감지된 상태
Staged: 파일이 Staging area에 존재하는 상태
Staging area란, Local repository에 저장할 파일들이 임시적으로 대기하는 영역을 의미합니다. 일반적으로 Git을 활용하여 작업을 할 때에는 Work space에서 작업을 마친 파일을 Staging area로 옮겨서 모아두고, 추후 어느 정도의 단위 작업이 끝나면 Staging area에 모인 파일들을 한 번에 Local repository로 저장합니다.
Local repository에 파일을 저장하는 것은 단순히 파일을 저장하는 것 이외의 특별한 의미를 가집니다. 따라서 Local repository에 파일들을 저장하기 전에 임시적으로 파일들을 모아둘 영역이 필요한데, 이것이 바로 Staging area입니다. Local repository에 대해서는 잠시 뒤에 설명하겠습니다.
자, 그렇다면 Staging area로 파일을 이동시키는 명령어는 무엇일까요? 위의 출력 결과 중, “use “git add …” to include in what will be committed"에서 알 수 있듯, git add를 사용하면 됩니다.
git add .
git status
결과 ▽
여기서 new file: hello_git.txt란 깃이 새로운 파일을 감지하였다는 의미이다. 그러나 아직 untracked상태라는 점을 생각해야한다. 깃이 새로운 파일을 감지하였다는 뜻이지 추적이 가능한 상태는 아니다. Tracked상태는 commit을 했을때만 가질 수 있는 상태다.
git add를 통해 스테이징까지 마쳤다면, 이제 Commit을 할 수 있습니다. Commit이란, Local repository에 파일을 저장하는 행위를 가리키며, 파일을 Local repository에 저장함과 동시에 파일의 버전을 기록합니다.
Commit을 할 때에는 각 버전을 쉽게 구분하기 위해 커밋 메세지를 입력합니다. git commit을 입력하면 여러 줄의 커밋 메세지를 입력할 수 있는 텍스트 편집기 창이 뜨지만, 보통 여러 줄의 커밋 메세지보다는 짧게 요약하여 한 줄만 작성합니다. 이러한 경우에는 git commit 명령어의 옵션 중 -m을 사용할 수 있습니다.
git commit -m "First commit"
결과 ▽
Commit을 실시한다는 것은 아래 도식과 같이 파일을 Local repository로 이동시키면서 버전을 기록하는 행위라고 할 수 있습니다.
git log //q를 입력하여 빠져나올 수 있음
commit 숫자+알파벳 : 커밋 해시를 나타내며, 커밋 해시는 각 버전마다 부여되는 고유 번호입니다. 즉, Local repository에 파일을 저장하면서 버전을 기록하였고, 해당 버전을 이 커밋 해시로 식별할 수 있습니다.
HEAD - > main
git init : git 연결
git add . : 임시 저장소에 모든 파일 저장
git commit -m "메시지"
git commit
로컬 저장소에 연결
git remote add <github별칭>
원격 저장소 연결
git remote -v
연결된 저장소 리스트 확인
git status
파일들 변경 상태 확인
git log
커밋 이력 확인
git push <원격저장소별칭> <push할 브랜치>
git pull <pull할 브랜치>
push는 원격저장소에 저장
pull은 원격저장소 파일을 로컬저장소에 저장
git clone
해당 url의 파일을 복사