[GIT CLI] GIT 기초 이해하기

정유진·2023년 9월 22일
0

GitHub

목록 보기
2/2

참고! 모든 git 관리는 해당 폴더에서 작업해야 합니다.
./downloads/Git 이라는 폴더 안이 아니라, ./downloads/Git/Project1 폴더까지 들어가서 CLI 작업을 해야 합니다.

Status


git은 이 세 stage를 통해 버전을 관리할 수 있습니다.

1. Working Tree 단게

먼저, working tree의 단계는 말 그대로 자유롭게 작업하는 공간입니다. Windows cli 기준으로 설명하자면,

copy con
notepad

와 같은 커멘드 명령어로 파일을 생성 및 수정 혹은 삭제하고, 내 local 안에서 Ctrl+S 로 저장하는 것까지 모두 working tree 단계 안에 있습니다. 여기서 막 새로운 파일을 생성하고 저장했을 때 git은 그 파일의 존재를 아직 모릅니다. 이 상태를 'untrackted' 상태라고 합니다. 파일이 tracked 상태가 되어, 어떤 내용이 새롭게 추가되고 수정되었는지 파악도 하고, 레파지토리에 내가 작업한 파일을 올리는 등의 모든 작업을 하기 위해서는 (당연히) git이 이 파일을 알고 있어야 합니다. 새롭게 생성한 파일을 tracked 상태로 만들기 위해서는 stage에 올리면 됩니다.

2. Staging Area 단계

파일을 생성하고 working tree 단계에서 staging 단계로 가기 위해 이 명령어를 사용합니다.

git add "[파일명.확장자]"

이전에 tracked 된 파일은 물론이고, 새로 생긴 파일까지 untracked 상태에서 tracked 상태로 바꿀 수 있습니다. stage에 파일을 올린다는 것은, 그 파일을 지금 처리하려는 버전에 포함시킨다는 말과 같습니다.

수정한 파일이 많을 경우 한꺼번에 stage에 올리고 싶다면 다음과 같은 명령어를 사용하면 됩니다.

git add .

3. Repository 단계

stage에 내가 수정하고자 하는 파일들을 모두 올렸다면, repository에 새로운 버전을 올리는 단계에 들어갑니다.
staging 단계에서 repository 단계로 가기 위해 이런 명령어를 사용합니다.

git commit -m "[버전명]"

-m은 버전명을 바로 작성할 수 있는 옵션입니다.
버전명을 여러 줄로 작성하고 싶을 경우 git commit만 입력한 상태에서 'Enter' 키를 누르면 작성할 수 있는 공간이 나옵니다.

추가: 입력 공간에서 빠져나오려면 ':w' 를 입력하여 저장 후 ':q' 를 눌러 빠져나옵니다.

이후 'Enter'키를 입력하면 새로운 버전이 생성되고 그 버전에 repository에 있는 버전이 됩니다.

기록 관리

현 git의 상태

git status

이 명령어를 입력하면 현재 폴더에 있는 파일들이 tracked 상태인지, modified된 상태인지, staging 상태인지, commit이 완료된 상태인지 등을 알 수 있습니다.

버전 기록

git log

이 명령어를 입력하면 그동안의 커밋 로그를 확인할 수 있습니다.
여기서 버전명과 함께 stating된 파일들의 목록까지 확인하고자 한다면

git log --stat

이라는 옵션을 입력하면 다음과 같이 파일들과 수정 사항들이 포함된 정보를 볼 수 있습니다.

브랜치 변경

git log를 입력하면
버전별 commit id를 각 첫 줄에서 확인할 수 있습니다.
브랜치을 변경한다는 것은 HEAD를 변경하는 것과 같습니다.
HEAD를 변경하기 위해서는 다음과 같은 명령어를 입력합니다.

git checkout [해당 버전의 commit id]

이후 다시 git log를 실행하면 변경하고자 했던 브랜치로 HEAD가 변경된 것을 알 수 있습니다.

주의: git status가 commited 상태여야 합니다.

다시 가장 최신의 브랜치로 되돌리려면 이것을 입력하면 됩니다.

git checkout master

공부하다가 알게 된 것들

Windows cmd 창에서 디렉터리 경로를 짧게 하려면

prompt $g

다시 되돌리려면

prompt $p$g

Windows의 ls는?

dir

Windows의 cat은?

type

0개의 댓글