본문 바로가기
EXTERNAL ACTIVITY/Code Presso -웹개발 트랙 체험단-

<코드 프레소 웹 개발 트랙> Git 기본 플로우 이해

by jaeaemin 2022. 1. 9.

https://www.codepresso.kr/

 

현재 폴더의 Git 상태 확인

깃의 상태의 변화가 생긴다면 status에 변경된 점들이 나타난다. 

$ git status

 

 

 

작업 디렉토리의 파일 상태  분류


  • Untracked 

변경점은 발생했으나, Git에 의해 관리되지 않고 있는 파일

( 단 한번도 Staging Area에 포함되지 않은 파일 즉, 새로 추가된 파일 )

 

  • Tracked

Git에 의해 관리되고 있는 파일 , 추적되고 있는 파일

( Staging Area에 한 번 이상 포함된 파일 ) 


만약 내가 새로운 파일을 생성한 후 이를 단순히 저장만 한다면 이 파일은 UnTrack된 상태로 Working Directory에 위치하여 나의 PC에서만 관리되고 있는 파일 상태가 된다.

 

 

 

 

 

스테이징 영역에 파일의 변경점을 추가 ( 추적시작 )


작업 디렉터리의 변경 사항중 커밋할 파일들을 미리 스테이징 영역에 추가하는 데는 add 명령어를 사용한다.

$ git add TestFile.java 
$ git status

위의 명령어를 통해서  변화한 파일이 Staging Area에서 변경점을 가진채로 commit 하기를 대기하게 된다.

이 예제에서는 TestFile.java가 Working Dir 와 Staging Area에서 모두 변경점을 가진 상태로 존재하고, 로컬 저장소는 수정되지 않은 파일을 가진채로 commit하기를 기다리게 된다. 

 

 

 

 

Commit 

- 스테이징 영역에 의미있는 변경점들이 쌓인 경우 변경점을 원격 저장소에 update하는 과정

- 커밋의 단위는 기능 or 이슈 or 파일 or 스프린트 주기 등 다양한 단위로 그룹의 정책마다 정해질 수 있다.

- 커밋의 단위가 너무 크다면  변경점을 파악하기 어렵고, commit의 merge과정에서 충돌이 발생할 확률이 증가한다. 

 

 

커밋을 생성하는 방법 

의미 있는 "변경 단위"라고 판단한 경우 , 로컬 저장소에 현재 파일 상태를 영구적으로 저장한다. 

$ git commit
[master (root-commit) 771d7ac] Commit 1 for Test
 1 file changed, 1 insertion(+)
 create mode 100644 test.java
 
 $ git commit -m " 커밋 메시지 "

- 에디터에서 'i' 를 입력하여 입력 상태로 만든다.

- Commit 메시지를 입력한다 ( 이는 Commit의 내용을 다른 사람들에게 전달하므로 중요함 ) 

- 그 후 Commit이 실행되고 콘솔창에 간단한 커밋한 결과를 출력한다. 

- 추가로 -m을 통해서 인라인 형식으로 커밋 메시지를 한번에 전달하는 것도 가능하다. 

 

 

 

Status

$ git status 
On branch master
nothing to commit, working tree clean

- git status로 확인하면 working directory의 작업 내용이 모두 commit 되어서 원격 저장소와 동기화 되었으므로 더이상 커밋할 내용이 없다고 출력되게 된다. 

- 한번 이상 추적을 시작한 파일은 Git에 의해 게속해서 관리된다. (modified 상태)

 

 

 

 

커밋의 히스토리 확인

$ git log

 

log를 통해서 커밋의 커밋 ID, 작성자, 날짜 , 커밋 메시지 등을 확인할 수 있다

커밋 ID는 Git이 SHA-1 이라는 해쉬 알고리즘을 통해서 자동으로 ID를 생성해준다.

GIt은 해당 해쉬 값을 가지고 Commit을 관리하게 된다. 

git log 명령어 뒤에 --help 옵션을 추가하면 명령어의 메뉴얼 페이지가 실행된다.

log 옵션 결과
$ git log -u 'commit ID' 커밋의 내용과 변경점을 출력함 ( git diff 내용 )
$ git log -숫자    최신 커밋을 기준으로 n개의 commit 변경점을 출력함
$ git log --name-only 변경된 파일 이름들까지 추가로 리스트 형식으로 출력함 
$ git log --oneline  단일 커밋에 대해 한 줄의 내용으로 간략하게 출력함
$ git show 'commit ID' git log -u 옵션과 동일한 결과 출력

 

 

 

 

변경된 코드 내용 확인 

$git diff

- 작업 디렉토리에서 기존 코드 대비 변경점을 확인할 수 있다.

- 간단한 변경점 확인에는 사용하지만 , 변경점이 많다면 파악하기 어렵다. 

 

 

 

 

 

커밋을 되돌리기

(1) 커밋 메시지 수정하기

$ git commit --amend

마지막 반영한 최신 커밋 메시지를 변경하고 싶을 때 실행함

최신 커밋 수정 가능한 에디터가 실행된다.

- 최신 커밋 메시지를 수정하게 된다.

- 되돌린 것을 복구 할 수 없다. ( 덮어쓰기가 실행됨 )

 

 

(2) 커밋 자체를 수정하기

 

  1. 파일을 수정 한 뒤, 스테이징 영역에 추가함
  2. git commit --amend 명령어로 커밋을 덮어쓰기 

 

(3) 커밋 롤백하기 

 

 - 커밋 히스토리를 유지하면서 내용만 롤백하는 경우 

 - 히스토리 관리가 중요한 실무에서 사용됨 

$ git revert "마지막 반영한 commit ID"

코드를 원복한다 

 = 반영한 특정 코드(변경점)를 제거한다. 

 = 반영한 커밋을 되돌린다.(revert 한다)

 

 

 

 

 

원격 저장소에 커밋 반영하기

$ git push [저장소 별칭] [현재 브랜치]

$ git push origin master

코드프레소의 강의에서는 GitHub가 아닌 GitLab을 사용하는데 GitLab 원격 저장소의 경우 Push를 하기 위해서는 계정의 이름과 비밀번호를 push마다 설정해주어야 한다.

 

텍스트 파일을 생성한 후 첫 번째 GitLab의 커밋

 

 

git pull

원격 저장소의 현재 상태를 나의 로컬 저장소로 가져온다

 

 

 


코드프레소 Java 웹 개발 체험단 활동 중

코드프레소 웹 개발 트랙의 GIT 형상관리 내용입니다.

반응형